Esta es una pregunta muy amplia sobre métodos y consejos sobre variables / estructura del entorno. Pero en última instancia, estoy buscando respuestas para la pregunta muy específica de '¿Cómo debo almacenar mis variables de entorno?'
En primer lugar algunas aclaraciones:
- Para mí, un entorno puede ser de 3 a 10 servidores y es una forma de contener la infraestructura de un cliente específico.
- Dentro de cada entorno hay algunas variables que en su mayoría se generan automáticamente a partir de algunas entradas clave (nombre, tamaño, etc.).
Tal como está ahora, estamos almacenando todas nuestras variables de entorno en una estructura como esta:
<playbook>.yml # Various playbooks for deployment
roles/windows # Ansible role for Ubuntu
roles/ubuntu # Ansible role for Ubuntu
config/hosts/<name>.yml # Ansible inventory
config/hosts/vars/<name>.json # Environment specific variables
En este momento, la configuración se inicializa como un submódulo en el repositorio de git anterior. Como el archivo de variables cambia con bastante frecuencia, esto ha causado problemas con el cambio de datos, una, dos o incluso tres veces entre confirmaciones, lo que hace que los cambios sean cada vez más difíciles de rastrear.
Como lo veo personalmente en el futuro, deberíamos buscar almacenar todas nuestras variables de cliente de forma centralizada / escalable y luego conectarlo con un inventario dinámico con ansible .
Entiendo que hay algunas tecnologías que parecen hacer una parte de lo que se podría requerir, como el Cónsul, pero parecen funcionar mejor en un entorno que sirve para una gran aplicación en lugar de muchas más pequeñas y ligeramente diferentes.
Esencialmente, veo que tenemos que escribir un script de inventario y luego guardar todos nuestros datos en una base de datos construida sin fines específicos y luego continuar como si nada hubiera cambiado. Considero que esto es concebible como una forma de reducir potencialmente muchos de los datos que almacenamos actualmente y tal vez buscar diferentes formas de almacenar los datos en lugar de simplemente escalar lo que les sirve nuevamente.
Espero que alguien tenga algún tipo de experiencia en la implementación de infraestructura como código cuando tenga que lidiar con muchos entornos más pequeños en lugar de uno, dos o tres enormes.
¿Alguna sugerencia?