Introdução
Neste laboratório, você aprenderá sobre os arquivos de configuração do Ansible e como personalizar o comportamento do Ansible. O Ansible utiliza arquivos de configuração para definir diversas configurações que controlam sua operação. Você explorará a configuração padrão, criará um arquivo de configuração personalizado e entenderá como diferentes opções de configuração afetam o comportamento do Ansible. Ao final deste laboratório, você terá experiência prática na configuração do Ansible para diferentes cenários, o que é crucial para adaptar o Ansible às suas necessidades e ambiente específicos.
Entendendo a Configuração Padrão do Ansible
Vamos começar examinando a configuração padrão do Ansible. O Ansible procura arquivos de configuração em vários locais, cada um com uma prioridade diferente.
Primeiro, vamos verificar se existe um arquivo de configuração do Ansible em todo o sistema:
cat /etc/ansible/ansible.cfg
Você pode ver uma mensagem de erro se este arquivo não existir, o que é normal em muitos ambientes.
Agora, vamos analisar os valores de configuração padrão do Ansible. Podemos fazer isso executando:
ansible-config dump
Este comando mostrará todas as configurações atuais do Ansible. É uma lista longa, então vamos detalhar algumas configurações importantes:
DEFAULT_HOST_LIST: O caminho do arquivo de inventário padrão.DEFAULT_REMOTE_USER: O usuário SSH padrão que o Ansible usará para se conectar aos hosts remotos.DEFAULT_BECOME_METHOD: O método padrão que o Ansible usará para elevação de privilégios (como sudo).
Não se preocupe se você ainda não entender todas essas configurações. À medida que você trabalhar mais com o Ansible, você se familiarizará com as mais relevantes para suas necessidades.
Pressione Q para sair da saída.
Agora, vamos criar um arquivo de inventário simples para usar em nossos próximos passos:
echo "localhost ansible_connection=local" > /home/labex/project/inventory
Isso cria um arquivo de inventário mínimo com apenas o localhost definido.
Criando um Arquivo de Configuração Ansible Personalizado
Agora que entendemos a configuração padrão, vamos criar um arquivo de configuração personalizado do Ansible. Isso nos permite substituir as configurações padrão e adaptar o comportamento do Ansible às nossas necessidades.
Crie um novo arquivo chamado ansible.cfg no diretório /home/labex/project:
nano /home/labex/project/ansible.cfg
Adicione o seguinte conteúdo ao arquivo:
[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
Vamos detalhar essas configurações:
inventory: Especifica o caminho para o nosso arquivo de inventário.remote_user: Define o usuário SSH padrão para as conexões.host_key_checking: Desabilita a verificação da chave do host SSH, o que pode ser útil em ambientes de teste (mas deve ser habilitado em produção por segurança).stdout_callback: Altera o formato de saída para YAML para melhor legibilidade.become: Habilita a elevação de privilégios por padrão.become_method: Define sudo como o método para elevação de privilégios.become_user: Especifica qual usuário se tornar ao elevar os privilégios.become_ask_pass: Desabilita a solicitação da senha sudo.
Salve e saia do editor. No nano, você pode fazer isso pressionando Ctrl+X, depois Y para confirmar e Enter para salvar.
Agora, vamos verificar se o Ansible está usando nosso novo arquivo de configuração. Execute:
ansible-config dump --only-changed
DEFAULT_BECOME(/home/labex/project/ansible.cfg) = True
DEFAULT_BECOME_ASK_PASS(/home/labex/project/ansible.cfg) = False
DEFAULT_BECOME_METHOD(/home/labex/project/ansible.cfg) = sudo
DEFAULT_BECOME_USER(/home/labex/project/ansible.cfg) = root
DEFAULT_HOST_LIST(/home/labex/project/ansible.cfg) = ['/home/labex/project/inventory']
DEFAULT_REMOTE_USER(/home/labex/project/ansible.cfg) = labex
DEFAULT_STDOUT_CALLBACK(/home/labex/project/ansible.cfg) = yaml
HOST_KEY_CHECKING(/home/labex/project/ansible.cfg) = False
Este comando mostrará apenas as configurações que diferem da configuração padrão. Você deve ver as alterações que fizemos em nosso arquivo ansible.cfg personalizado.
Testando a Configuração Personalizada
Agora que temos nossa configuração personalizada em vigor, vamos criar um playbook simples para testá-la. Isso nos ajudará a entender como as alterações em nossa configuração afetam o comportamento do Ansible.
Crie um novo arquivo chamado test_config.yml no diretório /home/labex/project:
nano /home/labex/project/test_config.yml
Atualize o conteúdo da seguinte forma:
---
- name: Test Custom Configuration
hosts: all
tasks:
- name: Display remote user
debug:
msg: "Connected as user: {{ ansible_user }}"
- name: Display privilege escalation info
debug:
msg: "Privilege escalation is {{ 'enabled' if ansible_become | default(false) else 'disabled' }}"
- name: Show Ansible configuration
debug:
msg: "Inventory file: {{ lookup('config', 'DEFAULT_HOST_LIST') }}"
- name: Check if become is enabled in ansible.cfg
command: grep "become = True" /home/labex/project/ansible.cfg
register: become_check
changed_when: false
failed_when: false
- name: Display become setting from ansible.cfg
debug:
msg: "Become is {{ 'enabled' if become_check.rc == 0 else 'disabled' }} in ansible.cfg"
Este playbook atualizado faz as seguintes alterações:
- Adicionamos um valor padrão para
ansible_becomepara evitar o erro de variável indefinida. - Adicionamos duas novas tarefas que verificam o arquivo
ansible.cfgdiretamente para a configuraçãobecome, fornecendo uma representação mais precisa da sua configuração.
Agora, vamos executar o playbook atualizado:
ansible-playbook /home/labex/project/test_config.yml
Isso deve ser executado sem erros e fornecer informações sobre sua configuração do Ansible.
Além disso, vamos resolver o aviso de depreciação atualizando nosso arquivo ansible.cfg:
nano /home/labex/project/ansible.cfg
Adicione a seguinte linha sob a seção [defaults]:
interpreter_python = /usr/bin/python3
Seu arquivo ansible.cfg agora deve ter esta aparência:
[defaults]
inventory = /home/labex/project/inventory
remote_user = labex
host_key_checking = False
stdout_callback = yaml
interpreter_python = /usr/bin/python3
[privilege_escalation]
become = True
become_method = sudo
become_user = root
become_ask_pass = False
Salve e saia do editor.
Agora, quando você executar o playbook novamente:
ansible-playbook /home/labex/project/test_config.yml
Você deve ver a saída sem o aviso de depreciação, e ela deve exibir corretamente as configurações de sua configuração.
Resumo
Neste laboratório, você aprendeu sobre arquivos de configuração do Ansible e como personalizar o comportamento do Ansible. Aqui estão os principais pontos:
O Ansible usa arquivos de configuração para controlar seu comportamento. A configuração padrão pode ser visualizada usando o comando
ansible-config dump.Você pode criar arquivos de configuração personalizados para substituir as configurações padrão. Esses arquivos são normalmente nomeados
ansible.cfge podem ser colocados em diferentes locais, com diferentes prioridades.As configurações importantes incluem:
inventory: Especifica o caminho para o arquivo de inventário.remote_user: Define o usuário SSH padrão para as conexões.host_key_checking: Controla a verificação da chave do host SSH.becomee configurações relacionadas: Controlam a elevação de privilégios.
O comando
ansible-config dump --only-changedé útil para visualizar apenas as configurações que diferem da configuração padrão.Você pode testar as alterações em sua configuração criando e executando playbooks que exibem informações de configuração.
A opção
--configpermite que você especifique um arquivo de configuração específico ao executar comandos Ansible, o que pode ser útil para testes ou quando você precisa usar configurações diferentes para diferentes cenários.
Entender e ser capaz de personalizar a configuração do Ansible é crucial para adaptar o Ansible ao seu ambiente e requisitos específicos. À medida que você continua trabalhando com o Ansible, provavelmente se verá ajustando essas configurações para otimizar seus fluxos de trabalho de automação.
Pratique criando diferentes arquivos de configuração para diferentes cenários. Por exemplo, você pode criar uma configuração para ambientes de teste, onde as configurações de segurança são relaxadas, e outra para ambientes de produção com configurações de segurança mais rigorosas.
Lembre-se, embora algumas configurações, como desabilitar host_key_checking, possam ser convenientes para testes, elas devem ser cuidadosamente consideradas em ambientes de produção, onde a segurança é fundamental. Sempre revise sua configuração do Ansible como parte de sua estratégia geral de segurança do sistema.
Em futuros laboratórios, você aprenderá como aproveitar essas configurações em cenários mais complexos, integrando-as com roles, inventários dinâmicos e outros recursos avançados do Ansible.


