Configurar ansible.cfg e os Padrões do Projeto

AnsibleBeginner
Pratique Agora

Introdução

O Ansible busca configurações em uma ordem previsível. Um arquivo ansible.cfg no nível do projeto é importante porque torna os comandos repetíveis, independentemente da sessão do shell em que sejam executados.

Neste laboratório, você criará um pequeno projeto, escreverá o ansible.cfg, definirá padrões de inventário, adicionará variáveis compartilhadas e executará suas primeiras verificações do Ansible a partir do diretório do projeto.

Criar um Projeto Mínimo e um Inventário

Nesta etapa, você criará os diretórios e o arquivo de inventário necessários para a configuração do Ansible no nível do projeto. Este laboratório começa a partir de uma VM limpa, portanto, você criará apenas os arquivos necessários aqui.

Crie a estrutura do projeto.

cd /home/labex/project
mkdir -p rhce-ansible/{inventory,group_vars,playbooks}

Este laboratório mantém o projeto pequeno propositalmente. O diretório inventory conterá a lista de hosts gerenciados, group_vars conterá variáveis que o Ansible carrega automaticamente, e playbooks está reservado para arquivos de automação futuros.

Entre no diretório do projeto.

cd rhce-ansible

Crie um inventário com um host gerenciado local.

cat > inventory/hosts <<'EOF'
[managed]
node1 ansible_connection=local
EOF

O nome do host node1 é um alias de inventário, não uma VM separada. A configuração ansible_connection=local faz com que o Ansible execute módulos neste mesmo sistema RHEL, permitindo que você pratique o direcionamento por grupos.

Escrever o ansible.cfg para o Projeto

Nesta etapa, você criará o ansible.cfg. A seção [defaults] controla o comportamento comum. Definir o inventory significa que você não precisa digitar -i inventory/hosts para cada comando.

Antes de executar os comandos nesta etapa, retorne ao diretório do projeto para que os caminhos relativos se refiram ao projeto Ansible.

cd /home/labex/project/rhce-ansible

Escreva o arquivo de configuração.

cat > ansible.cfg <<'EOF'
[defaults]
inventory = ./inventory/hosts
remote_user = labex
host_key_checking = False
retry_files_enabled = False
interpreter_python = auto_silent
stdout_callback = default
EOF

Cada configuração elimina uma escolha repetida na linha de comando. O inventory aponta para o arquivo de inventário estático, remote_user define o usuário de login padrão, host_key_checking = False evita prompts de chave de host SSH em ambientes de laboratório, e interpreter_python = auto_silent permite que o Ansible selecione o Python sem avisos de descoberta ruidosos.

Pergunte ao Ansible qual arquivo de configuração ele está usando.

ansible --version | sed -n '1,4p'

A saída deve incluir config file = /home/labex/project/rhce-ansible/ansible.cfg.

Este é um hábito importante: se o Ansible estiver lendo um arquivo de configuração diferente, os comandos subsequentes podem usar um inventário, callback ou comportamento de conexão diferente do esperado pelo laboratório.

Inspecionar o Inventário através dos Padrões do Projeto

Nesta etapa, você testará se o ansible.cfg realmente aponta o Ansible para o seu inventário. Como o caminho do inventário está configurado, este comando não precisa da opção -i.

Antes de executar os comandos nesta etapa, retorne ao diretório do projeto para que os caminhos relativos se refiram ao projeto Ansible.

cd /home/labex/project/rhce-ansible

Exiba o gráfico do inventário.

ansible-inventory --graph

O gráfico deve mostrar o grupo managed e o host node1.

A visualização em gráfico é útil antes de executar comandos, pois mostra o inventário após o Ansible tê-lo analisado. Se um grupo ou host estiver faltando aqui, um alvo de playbook também não o encontrará.

Liste as variáveis de host para node1.

ansible-inventory --host node1

Você deve ver ansible_connection definido como local.

A visualização de host mostra as variáveis de host resolvidas, não apenas a linha de inventário bruta. Laboratórios posteriores usam o mesmo comando para solucionar problemas sobre se as variáveis vieram do inventário, de group_vars ou de host_vars.

Adicionar Variáveis Compartilhadas

Nesta etapa, você adicionará variáveis para todos os hosts gerenciados. Arquivos em group_vars são carregados automaticamente quando seus nomes correspondem a grupos de inventário ou all.

Antes de executar os comandos nesta etapa, retorne ao diretório do projeto para que os caminhos relativos se refiram ao projeto Ansible.

cd /home/labex/project/rhce-ansible

Crie group_vars/all.yml. O YAML usa pares chave: valor. Mantenha um espaço após cada dois-pontos.

cat > group_vars/all.yml <<'EOF'
project_owner: labex
baseline_message: Managed by the RHCE Ansible prep project
EOF

O nome do arquivo all.yml tem um significado especial: o Ansible o aplica a todos os hosts do inventário. Como se trata de YAML, a indentação e o espaço após cada dois-pontos são essenciais para tornar o arquivo válido.

Use o módulo debug para imprimir uma variável do host gerenciado.

ansible managed -m ansible.builtin.debug -a 'var=baseline_message'

A saída deve incluir a mensagem de group_vars/all.yml.

O comando ad hoc tem três partes: managed é o padrão de host, -m seleciona o módulo e -a passa o argumento do módulo. Um resultado bem-sucedido prova que o inventário configurado e o carregamento de variáveis estão funcionando em conjunto.

Executar uma Verificação de Conectividade

Nesta etapa, você executará o módulo ping. Este não é o ping ICMP; é um módulo do Ansible que verifica se o Ansible consegue executar o Python no host de destino.

Antes de executar os comandos nesta etapa, retorne ao diretório do projeto para que os caminhos relativos se refiram ao projeto Ansible.

cd /home/labex/project/rhce-ansible

Execute a verificação contra o grupo managed.

ansible managed -m ansible.builtin.ping

Um resultado bem-sucedido inclui pong.

O módulo ping do Ansible é um teste de execução de módulo, não um ping de rede ICMP. Ele prova que o Ansible consegue alcançar o host, iniciar o Python e retornar um resultado de módulo.

Salve um pequeno arquivo de prova a partir de um comando ad hoc. O módulo copy grava conteúdo em um caminho de destino.

ansible managed -m ansible.builtin.copy -a 'content=ansible_cfg_ready dest=/home/labex/project/rhce-ansible/config-check.txt mode=0644'

Quando este comando relatar changed, significa que o Ansible criou ou atualizou o arquivo. Se você executá-lo novamente com o mesmo conteúdo e modo, o resultado deverá ser ok, pois o estado desejado já existe.

Resumo

Você criou um ansible.cfg no nível do projeto, confirmou que o Ansible carrega o inventário configurado, adicionou variáveis compartilhadas e executou verificações de módulo ad hoc. Os próximos laboratórios utilizarão esta configuração de projeto repetível como base.