Neste blog, pegaremos um script de atualização de servidor Ansible simples e o transformaremos em um sistema de atualização baseado em risco . Aqui, os servidores com o menor risco são corrigidos primeiro, dando-nos a chance de testar completamente antes de passar para os sistemas de prioridade superior.
o molho secreto? Configurando grupos bem definidos para tornar esse fluxo perfeitamente. Mas a verdadeira questão é: podemos fazer isso sem grandes mudanças em nosso script Ansible da última vez? Vamos descobrir!
O arquivo host está no coração dessa mudança. Na última postagem, usamos um arquivo estático agrupado por tipos de servidores. Agora, estamos adicionando uma segunda camada de agrupamento pelo nível de risco-que adiciona alguma complexidade ao arquivo host.
Mas aqui está a torção: e se nosso arquivo host pudesse ser gerado dinamicamente a partir de uma fonte mais genérica? Isso manteria as coisas flexíveis e nos salvaria da edição interminável de arquivos!
Ansible pode funcionar com arquivos host criados dinamicamente, o que nos dá uma maneira mais flexível de acompanhar os servidores. Neste exemplo, usaremos um arquivo do Excel para organizar nossos hosts.
Exemplo de hosts_data.xlsx estrutura:
nome do host | ambiente do servidor | usuário Ansible | Tipo de servidor | dns | notas |
---|---|---|---|---|---|
hortelã | dev | Richard | Desktop | desktop.sebostech.local | Mint Top Top |
ANSIBLE_NODE | dev | ANSIBLE_ADMIN | ANSIBLE | Ansible_node.sebostech.local | servidor de desenvolvimento; Apenas atualiza mensalmente |
clone_master | dev | ANSIBLE_ADMIN | clone | clone.dev.sebostech.local | servidor de desenvolvimento; Apenas atualiza mensalmente |
mele | staging | Richard | nas | NAS.STAGE.SEBOSTECH.LOCAL | servidor de teste; Usado para testes de aplicativos |
PBS | produção | raiz | servidor de backup | pbs.prod.sebostech.local | servidor de teste; Usado para testes de aplicativos |
pve | produção | raiz | hypervisor | api.stage.sebostech.local | servidor de teste; Usado para testes de aplicativos |
samba | produção | Richard | nas | nas.prod.sebostech.local | servidor crítico; Requer backup diário |
firewall | produção | Richard | firewall | firewall.sebostech.local | servidor crítico; Requer backup diário |
A maioria dos departamentos de TI já possui uma lista de servidores escondidos em um arquivo do Excel, então por que não usá -lo em bom uso? Essa abordagem facilita a manutenção de nossos hosts Ansible organizados e atualizados sem atualizações manuais constantes.
Mas como o Ansible usa o arquivo do Excel? Vamos mergulhar em como podemos transformar esses dados em um inventário dinâmico utilizável!
## This will run agains all host ansible-playbook -i dynamic_inventory.py playbook.yml
Você também pode usar a opção Variáveis de ambiente para segmentar grupos específicos, com base no ambiente do servidor, tipo de servidor ou mesmo uma combinação de ambos:
## Just production SERVER_ENVIRONMENT="production" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## Just nas SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web" ## production nas SERVER_ENVIRONMENT="production" SERVER_TYPE="nas" ansible-playbook -i dynamic_inventory.py playbook.yml --limit "high:web"
precisa de novos grupos? Basta atualizar o arquivo do Excel e ajustar o script python de acordo com isso!
para ver o código Python, veja aqui.
Quando comecei a usar o Ansible, o arquivo hosts era o meu preferido. Mas, à medida que adicionei mais servidores, especialmente aqueles com funções duplas, esse arquivo ficou cada vez mais complexo.
você poderia usar um arquivo de hosts tradicionais para conseguir isso? Certamente, mas existem algumas desvantagens.
Com um arquivo hosts, você provavelmente acabaria com entradas duplicadas ou variáveis adicionais para capturar toda a estrutura necessária. Um arquivo do Excel, por outro lado, fornece uma estrutura limpa e fácil de manutenção que mantém as coisas organizadas.
Em um ambiente corporativo, há uma boa chance de que já exista pelo menos um arquivo do Excel com uma lista de servidores, então por que não tirar proveito disso?
Se você quiser que eu mergulhasse mais fundo no código Python, apenas me avise!
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3