¿Cuál es la mejor práctica para almacenar las credenciales de la base de datos para un entorno de escalado automático, pero también requiere la capacidad de actualizar la información de la base de datos?
Por ejemplo, tengo un sitio de escalado automático en AWS. En la actualidad solo hay una base de datos, pero en algún momento se agregarán nuevas instancias de bases de datos (ya sea para fragmentación de datos o readonlys)
Estoy tratando de descubrir la mejor manera de almacenar las credenciales de la base de datos de una manera que también las pueda actualizar fácilmente. Aunque he mencionado AWS aquí, idealmente, me gustaría algo que sea agnóstico de plataforma si es posible.
Evidentemente, es incorrecto almacenar las credenciales de la base de datos en el control de origen, por lo que mis ideas iniciales son las siguientes (pero incluso esto parece incorrecto)
Utilice el mismo nombre de usuario y contraseña en todos los servidores de bases de datos (podría haber diferentes usuarios dependiendo de si se trata de una base de datos de escritura o de solo lectura, pero todos los usuarios estarán en los servidores que los necesitan). Luego, de alguna manera, guárdelos de forma segura en una imagen de servidor web. Aunque también he leído algunas publicaciones argumentando que las variables de entorno no deberían usarse, así que me pregunto cómo hacerlo.
Un archivo de configuración separado podría vivir en el control de origen que simplemente detalla las direcciones y los nombres de los servidores de bases de datos, aunque también creo que esto debería ser secreto. Entonces surge el problema de obtener fácilmente una lista actualizada de servidores de bases de datos para todos los servidores web.
El problema al que me estoy enfrentando es cómo actualizar x número de servidores con detalles de las bases de datos y de forma segura cuando tanto x como y pueden cambiar. y en teoría sería más estable que x si x fuera autoescalado. Pero al mismo tiempo, cuando cambie, tendrá un mayor impacto.
Lo más probable es que esté en una máquina con Linux (Ubuntu). No he enumerado un lenguaje de scripting específico, ya que sería bueno si hubiera soluciones que puedan usarse más ampliamente
Gracias