Essa é uma pergunta muito ampla sobre métodos e conselhos sobre variáveis / estrutura do ambiente. Mas, em última análise, estou procurando respostas para a pergunta muito específica de 'Como devo armazenar minhas variáveis de ambiente?'
Primeiramente alguns esclarecimentos:
- Um ambiente para mim pode ser de 3 a 10 servidores e é uma maneira de conter a infraestrutura de um cliente específico.
- Dentro de cada ambiente, existem algumas variáveis que são geradas automaticamente a partir de algumas entradas principais (nome, tamanho, etc.).
No momento, estamos armazenando todas as nossas variáveis de ambiente em uma estrutura 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
No momento, a configuração é inicializada como um submódulo no repositório git acima. Como o arquivo de variáveis muda com bastante frequência, isso causa problemas na alteração dos dados, uma vez, duas ou até três vezes entre confirmações, tornando as alterações cada vez mais difíceis de rastrear.
Do ponto de vista pessoal daqui para frente, devemos procurar armazenar todas as variáveis de nossos clientes de maneira centralizada / escalável e depois conectá-las a ela com um inventário dinâmico e ansible .
Entendo que existem algumas tecnologias que parecem fazer parte do que poderia ser necessário, como o Consul, mas elas parecem funcionar melhor em um ambiente que atende a um grande aplicativo, em vez de muitas pequenas e ligeiramente diferentes.
Essencialmente, vejo-nos tendo que escrever um script de inventário e, em seguida, apenas empurrar todos os nossos dados para algum banco de dados criado não para fins específicos e continuar como se nada tivesse mudado. Vejo isso concebivelmente como uma maneira de reduzir potencialmente muitos dados que armazenamos atualmente e talvez procurar maneiras diferentes de armazenar os dados, em vez de apenas aumentar o que serve novamente.
Espero que alguém tenha algum tipo de experiência na implementação de infraestrutura como código ao ter que lidar com muitos ambientes menores em oposição a um, dois ou três grandes.
Alguma sugestão?