Como usar inventários estáticos e dinâmicos em Ansible - Parte 4

Como usar inventários estáticos e dinâmicos em Ansible - Parte 4

Nisso Parte 4 de série Ansible, explicaremos como usar inventário estático e dinâmico para definir grupos de hosts em Ansible.

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

Anfitriões gerenciados pode ser listado como entradas individuais ou categorizado em um nome de grupo como veremos mais tarde. Em Ansible, existem dois tipos de arquivos de inventário: Estático e Dinâmico.

Vamos dar uma olhada em cada um deles e ver como podemos gerenciá -los. Até agora, assumimos que você já instalou o Ansible no seu nó de controle e configuramos a conexão ssh sem senha com seus hosts gerenciados.

Arquivo de inventário de host estático

Em Ansible, Um arquivo de inventário estático é um arquivo de texto sem formatação que contém uma lista de hosts gerenciados declarados em um grupo host usando nomes de host ou endereços IP.

Um nome de grupo host é fechado entre colchetes i.e [nome do grupo]. As entradas do host gerenciado estão posteriormente listadas abaixo do nome do grupo, cada uma em sua própria linha. Conforme discutido anteriormente, os hosts são listados usando nomes de host ou endereços IP.

[nome do grupo] Hospedar um host ip_address b ip_address host c ip_address 

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

# mkdir test_lab && CD test_lab # hosts vim 
Arquivo de inventário estático
[Web Servers] 173.82.115.165 [Database_servers] 173.82.220.239 [Datacenter: crianças] WebServers Database_servers 

Salve o arquivo e saia.

Como você pode ver no arquivo de inventário acima, criamos 2 grupos host: servidores da web e Database_servers. Além disso, criamos um grupo adicional chamado Centro de dados que inclui um grupo de grupos anfitriões denotados por ': crianças' sufixo como visto acima.

Ansible também permite que grupos de hosts sejam colocados em um nome de grupo. No arquivo de inventário acima, o servidores da web e Database_servers grupos foram colocados sob o Centro de dados.

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

173.82.202.239 172.82.115.165 load_balancer.pnl.com 

Vamos agora usar alguns comandos Ansible para referenciar o arquivo de inventário do host. A sintaxe básica para gerenciamento de 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 os hosts Ansible

Como alternativa, você pode usar o personagem curinga * para substituir 'todos' argumento.

$ ANSIBLE * -i/root/test_labs/hosts -List -hosts 
Liste os anfitriões Ansible usando curingas

Para listar os hosts em um grupo, especifique o grupo host no local do padrão host.

$ ANSIBLE WebServers -i/root/test_labs/hosts -List -hosts 
Liste os anfitriões Ansible no grupo

Arquivo de inventário host dinâmico

Em uma configuração - especialmente uma configuração de nuvem, como AWS Onde o arquivo de inventário continua mudando constantemente à medida que você adiciona ou descomissiona servidores, acompanhando os hosts definidos no arquivo de inventário se torna um verdadeiro desafio. Torna -se inconveniente voltando ao arquivo host e atualizando a lista de hosts com seus endereços IP.

E é aqui que um inventário dinâmico vem 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 é útil em ambientes em nuvem, como a AWS, onde os endereços IP mudam quando um servidor virtual é interrompido e iniciado novamente.

A Ansible já desenvolveu scripts de inventário para plataformas de nuvem pública, como o Google Compute Engine, a Amazon EC2 Instância, OpenStack, Rackspace, Sobbler, 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 para reduzir o erro humano à medida que a informação é coletada usando scripts.
  • É necessário um esforço mínimo no gerenciamento de inventários.

Você pode escrever seu próprio inventário dinâmico personalizado em uma linguagem de programação de sua escolha. O inventário deve retornar um formato em JSON quando as opções apropriadas forem passadas.

Utilize um script de inventário dinâmico existente

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

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

# ./Script -List 

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

Um dicionário composto por grupos (i.E Web Servers, Database_servers)
  • Uma lista de hosts gerenciados por grupo
  • Um dicionário de variáveis
Meta dicionário
  • Hosts e HostVars
Saída de amostra
"WebServers": "hosts": ["WebServer1.exemplo.com "," WebServer2.exemplo.com "]," vars ": ," database_servers ": " hosts ": [" mysql_db1 "," mysql_db2 "]," vars ": ," _meta ": " hosts ": " mysql_db2 ": ," WebServer2.exemplo.com ": ," WebServer1.exemplo.com ": ," mysql_db1 ":  
Conclusão

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

Por outro. Os endereços IP dos hosts também são dinâmicos ao parar e iniciar novos sistemas host. Esperamos que você tenha encontrado este tutorial informativo.