Configuração do Ansible

AnsibleBeginner
Pratique Agora

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.

Este é um Lab Guiado, que fornece instruções passo a passo para ajudá-lo a aprender e praticar. Siga as instruções cuidadosamente para completar cada etapa e ganhar experiência prática. Dados históricos mostram que este é um laboratório de nível iniciante com uma taxa de conclusão de 95%. Recebeu uma taxa de avaliações positivas de 99% dos estudantes.

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:

  1. Adicionamos um valor padrão para ansible_become para evitar o erro de variável indefinida.
  2. Adicionamos duas novas tarefas que verificam o arquivo ansible.cfg diretamente para a configuração become, 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:

  1. 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.

  2. Você pode criar arquivos de configuração personalizados para substituir as configurações padrão. Esses arquivos são normalmente nomeados ansible.cfg e podem ser colocados em diferentes locais, com diferentes prioridades.

  3. 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.
    • become e configurações relacionadas: Controlam a elevação de privilégios.
  4. O comando ansible-config dump --only-changed é útil para visualizar apenas as configurações que diferem da configuração padrão.

  5. Você pode testar as alterações em sua configuração criando e executando playbooks que exibem informações de configuração.

  6. A opção --config permite 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.