Como usar inventários estáticos e dinâmicos no Ansible – Parte 4

Nesta parte 4 da série Ansible, vamos explicar como usar inventários estáticos e dinâmicos para definir grupos de hosts no Ansible.

Em um Ansible, hosts gerenciados ou servidores que são controlados pelo nó de controle do Ansible são definidos em um arquivo de inventário do host como explicado em. Um arquivo de inventário de host é um arquivo texto que consiste em nomes de hosts ou endereços IP de hosts gerenciados ou servidores remotos.

hosts gerenciados podem ser listados como entradas individuais ou categorizados sob um nome de grupo, como veremos mais adiante. Em Ansible, existem dois tipos de arquivos de inventário: Static e Dynamic.

Deixamos uma olhada em cada um deles e vemos como podemos gerenciá-los. Por enquanto, assumimos que você já tenha instalado Ansible no seu nó de Controle, e configurado uma conexão SSH sem senha para seus hosts gerenciados.

Static Host Inventory File

In Ansible, um arquivo de inventário estático é um arquivo de texto simples que contém uma lista de hosts gerenciados declarados sob um grupo de hosts usando nomes de hosts ou endereços IP.

Um nome de grupo de hosts está entre parênteses rectos, ou seja, . As entradas do host gerenciado são listadas posteriormente abaixo do nome do grupo, cada uma em sua própria linha. Como discutido anteriormente, os hosts são listados usando nomes de hosts ou endereços IP.

Host A ip_address Host B ip_addressHost c ip_address

Para fins de ilustração, criaremos um arquivo de inventário estático.

# mkdir test_lab && cd test_lab# vim hosts
Static Inventory File
173.82.115.165173.82.220.239webserversdatabase_servers

Save o arquivo e saia.

Como você pode ver no arquivo de inventário acima, nós criamos 2 grupos de hosts: webservers e database_servers. Também criamos um grupo adicional chamado datacenter que inclui um grupo de grupos de host indicado por ': children' sufixo como visto acima.

Ansible também permite que grupos de hosts sejam colocados sob um nome de grupo. No arquivo de inventário acima, os webservers e grupos de servidores_de_base de dados foram colocados sob o datacenter.

NOTE: Não é obrigatório colocar hosts gerenciados em um grupo de hosts. Você pode simplesmente listá-los usando seus nomes de host ou endereços IP por exemplo.

173.82.202.239172.82.115.165load_balancer.pnl.com

Vamos agora usar alguns comandos Ansible para referenciar o arquivo de inventário do host. A sintaxe básica para gerenciamento do inventário é como mostrado.

$ ansible {host-pattern} -i /path/of/inventory/file --list-hosts

Por exemplo,

$ ansible all -i /root/test_labs/hosts --list-hosts
Listar hosts possíveis

Alternativamente, você pode usar o caractere wildcard * para substituir 'all' argumento.

$ ansible * -i /root/test_labs/hosts --list-hosts
Listar Anfitriões Possíveis Usando Wildcards

Para listar os anfitriões em um grupo, especifique o grupo de anfitriões no lugar do padrão de anfitrião.

>

$ ansible webservers -i /root/test_labs/hosts --list-hosts
Listar hosts possíveis em grupo

Arquivo Dinâmico de Inventário de hosts

Em uma configuração – especialmente em uma configuração de nuvem como AWS onde o arquivo de inventário muda constantemente à medida que você adiciona ou desabilita servidores, manter o controle dos hosts definidos no arquivo de inventário torna-se um verdadeiro desafio. Torna-se inconveniente voltar ao arquivo de hosts e atualizar a lista de hosts com seus endereços IP.

E é aqui que um inventário dinâmico vem para jogar. Então o que é um inventário dinâmico? Um inventário dinâmico é um script escrito em Python, PHP ou qualquer outra linguagem de programação. Ele vem a calhar em ambientes de nuvem como AWS onde os endereços IP mudam quando um servidor virtual é parado e iniciado novamente.

Ansible já desenvolveu scripts de inventário para plataformas de nuvem pública como Google Compute Engine, Amazon EC2 instance, OpenStack, RackSpace, cobbler, entre outros.

Quais são as vantagens de um inventário dinâmico sobre um inventário estático?
  • Inventários dinâmicos fazem um trabalho perfeito de redução de erros humanos à medida que a informação é recolhida usando scripts.
  • Realizar um esforço mínimo na gestão de inventários.

Pode escrever o seu próprio inventário dinâmico personalizado numa linguagem de programação à sua escolha. O inventário deve retornar um formato no JSON quando as opções apropriadas forem aprovadas.

Utilizar um script de inventário dinâmico existente

Um script que é usado para criar um inventário dinâmico deve ser tornado executável para que Ansible possa usá-lo.

Para recuperar informações sobre os hosts dentro de um script de inventário dinâmico simplesmente execute.

# ./script --list 

Como apontado anteriormente, a saída deve estar no JSON no formato abaixo.

Um dicionário composto de grupos (i.e webservers, base de dados_Servers)
  • Uma lista de hosts gerenciados por grupo
  • Um dicionário de variáveis
Dicionário Meta
  • Hosts e hostvars
Sample Output
Conclusão

Neste artigo, demonstramos como criar inventários tanto estáticos quanto dinâmicos. Em resumo, um arquivo de inventário estático é um arquivo de texto simples contendo uma lista de hosts gerenciados ou nós remotos cujos números e endereços IP permanecem razoavelmente constantes.

Por outro lado, um arquivo de host dinâmico continua mudando à medida que você adiciona novos hosts ou descomissiona os antigos. Os endereços IP dos hosts também são dinâmicos à medida que você pára e inicia novos sistemas hospedeiros. Nós esperamos que você tenha achado este tutorial informativo.