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.


