
Eu me pergunto qual seria uma boa solução para gerenciar um ambiente com uma combinação de hosts e vars e grupos dinâmicos e estáticos.
Estou pensando em uma combinação de hosts físicos em um datacenter com uma combinação de tarefas específicas (nó físico do banco de dados) mais Hosts Proxmox gerenciando algumas VMs dinâmicas, juntamente com alguns provedores de nuvem para gerenciar novas VMs em alguma situação, onde o desempenho físico é não é suficiente (terceirizar picos de desempenho).
Nesse caso – um inventário dinâmico é uma boa prática. Claro que existem alguns plugins para AWS, Hetzner, etc. Mas é possível combinar isso com entradas estáticas?
Eu construo um banco de dados com todas as entradas e scripts que atualizam a lista de VMs em nuvem por solicitação no banco de dados. Todos os hosts dinâmicos junto com os hosts estáticos e alguns vars de grupo, vars de host são armazenados no banco de dados. E há um serviço da web que gera o inventário dinâmico JSON que um script python carrega e que é usado como inventário dinâmico em meus playbooks.
Minha pergunta é: sou o único com esse tipo de configuração? Quando penso em uma empresa com alguns hosts VMWare junto com um número dinâmico de VMs nesses hosts, além de alguns outros sistemas físicos, ficaria "claro" que deveria haver algum tipo de "ferramenta" ou ajuda para esta configuração. Mas até onde posso ver, existe um inventário estático (YAML, INI) ou um inventário dinâmico (JSON). Mas será que cada administrador desenvolve seu próprio banco de dados de inventário dinâmico? Ou existe um determinado “produto” ou “projeto” de software? Ou é uma prática “melhor” ter inventários diferentes para ambientes “estáticos” e “dinâmicos”?
Responder1
Ansible tem vários lançamentosplug-ins de inventário. Sim, você pode combiná-los como múltiplas -i
opções ou especificar um diretório contendo vários inventários.
Por exemplo, você pode ter tudo isso nos diretórios inventory/stage/
e inventory/prod/
:
- hcloud para Hetzner
- aws_ec2 para AWS
- YAML com uma lista de hosts estática
- Seu script de inventário personalizado
- construído para gerar grupos e vars a partir de expressões
Os nomes dos grupos devem ser consistentes para uma determinada coisa, para que as peças possam usar padrões estáticos.
Construídoé muito legal. Use expressões Jinja em fatos de inventário ou hosts para criar grupos e vars. Por exemplo, você pode querer que alguma tag ec2, além de alguma regex de nome de host, sejam membros de um grupo.
Caso isso não seja suficiente, você pode escrever seus próprios plug-ins de inventário. Normalmente, eles se comunicam com uma API, digamos, se você hackear um plugin de inventário Proxmox. Ou abandone o inventário múltiplo no lado Ansible, encontre uma ferramenta multinuvem que funcione para você e faça com que ela emita JSON para inventário.