Gostaria de saber qual seria uma boa solução para gerenciar um ambiente com uma combinação de hosts dinâmicos e estáticos e vars e grupos.
Estou pensando em uma combinação de hosts físicos em um datacenter com uma combinação de tarefas específicas (nó de banco de dados físico) 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, juntamente com os hosts estáticos e algumas vars de grupo, as vars de host são armazenadas no banco de dados. E há um webservice que gera o inventário dinâmico JSON que um script python carrega e que é usado como um inventário dinâmico em meus playbooks.
Minha pergunta é - eu sou o único com esse tipo de configuração? Quando penso em uma empresa com alguns hosts VMWare juntamente com um número dinâmico de VMs nesses hosts mais alguns outros sistemas físicos, seria "claro" que deveria haver algum tipo de "ferramenta" ou ajuda para essa configuração. Mas até onde posso ver, existe um inventário estático (YAML, INI) ou um inventário dinâmico (JSON). Mas todo 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 estoques diferentes para ambientes "estáticos" e "dinâmicos"?
O Ansible tem vários plugins de inventário lançados . Sim, você pode combiná-los como várias
-i
opções ou especificar um diretório contendo vários inventários.Por exemplo, você pode ter todos esses diretórios
inventory/stage/
einventory/prod/
:Os nomes dos grupos devem ser consistentes para uma determinada coisa, para que as jogadas possam usar padrões estáticos.
Construído é bem legal. Use expressões Jinja em fatos do inventário ou hosts para criar grupos e vars. Por exemplo, você pode querer que alguma tag ec2, mais alguma regex de nome de host, sejam membros de um grupo.
Se isso não for suficiente, você pode escrever seus próprios plugins de inventário. Normalmente, eles falam com uma API, digamos, se você hackear um plug-in de inventário Proxmox. Ou abandone o inventário múltiplo no lado do Ansible, encontre uma ferramenta multinuvem que funcione para você e faça com que ela emita JSON para inventário.