Introdução
O Ansible, uma poderosa ferramenta de automação de infraestrutura, pode, por vezes, encontrar erros de "inatingível" e "falha" durante a execução de um playbook. Este tutorial irá guiá-lo através do processo de identificação, compreensão e resolução destes problemas, ajudando-o a manter um ambiente Ansible confiável e eficiente.
Identificando Erros "Inatingível" e "Falha" no Ansible
Compreendendo Erros "Inatingível"
Erros "Inatingível" no Ansible ocorrem quando o nó de controle não consegue estabelecer uma conexão com o nó gerenciado. Isso pode acontecer devido a várias razões, como:
- O nó gerenciado não está ligado ou está offline.
- A conexão SSH entre o nó de controle e o nó gerenciado não está configurada corretamente.
- Regras de firewall estão bloqueando a conexão entre o nó de controle e o nó gerenciado.
- O servidor SSH do nó gerenciado não está em execução ou não é acessível.
Para identificar erros "Inatingível", você pode procurar o seguinte na saída do Ansible:
fatal: [<host>] => {
"msg": "Erro SSH: os dados não puderam ser enviados para o host remoto. Certifique-se de que este host pode ser alcançado via ssh",
"unreachable": true
}
Compreendendo Erros "Falha"
Erros "Falha" no Ansible ocorrem quando o nó de controle consegue estabelecer uma conexão com o nó gerenciado, mas a execução da tarefa no nó gerenciado falha. Isso pode acontecer devido a várias razões, como:
- O comando ou módulo da tarefa não é válido ou não é suportado no nó gerenciado.
- O comando ou módulo da tarefa encontra um erro durante a execução no nó gerenciado.
- A tarefa não consegue atingir o estado desejado no nó gerenciado.
Para identificar erros "Falha", você pode procurar o seguinte na saída do Ansible:
fatal: [<host>]: FALHOU! => {
"changed": false,
"msg": "Algum mensagem de erro",
"rc": 1,
"results": []
}
Solucionando Erros "Inatingível"
Verificando a Conectividade
O primeiro passo para solucionar erros "Inatingível" é garantir que o nó de controle possa estabelecer uma conexão com o nó gerenciado. Você pode usar os seguintes comandos para testar a conectividade:
## Pingar o nó gerenciado
ping <ip_do_nó_gerenciado>
## Tentar uma conexão SSH com o nó gerenciado
ssh <nome_de_usuário_do_nó_gerenciado>@<ip_do_nó_gerenciado>
Se o ping ou a conexão SSH falharem, você precisará investigar a configuração de rede e as configurações de firewall em ambos o nó de controle e o nó gerenciado.
Verificando a Configuração SSH
Outra causa comum de erros "Inatingível" é um problema com a configuração SSH entre o nó de controle e o nó gerenciado. Você pode verificar a configuração SSH, verificando o seguinte:
- Certifique-se de que as chaves SSH estão configuradas corretamente e que o nó de controle tem as permissões necessárias para acessar o nó gerenciado.
- Verifique os parâmetros da conexão SSH, como o nome de usuário, porta e arquivo de chave privada, no arquivo de inventário do Ansible ou na definição da tarefa.
- Certifique-se de que o servidor SSH está em execução no nó gerenciado e que é acessível a partir do nó de controle.
Depurando a Verbosidade do Ansible
Para obter informações mais detalhadas sobre o erro "Inatingível", você pode aumentar a verbosidade da saída do Ansible usando as opções -vvv ou -vvvv. Isso fornecerá informações mais detalhadas sobre o processo de conexão e autenticação, o que pode ajudá-lo a identificar a causa raiz do problema.
ansible-playbook -i inventory.yml playbook.yml -vvv
Verificando o Status do Nó Gerenciado
Em alguns casos, o erro "Inatingível" pode ser devido ao nó gerenciado estar desligado ou não responder. Você pode verificar o status do nó gerenciado usando o seguinte comando:
ansible <padrão_de_host> -m ping
Se o nó gerenciado não estiver respondendo, você precisará investigar o problema no lado do nó gerenciado, como verificar o status de energia, conectividade de rede ou logs do sistema.
Solucionando Erros "Falha"
Verificando a Sintaxe e Execução da Tarefa
Ao encontrar erros "Falha", o primeiro passo é verificar a sintaxe e a execução da tarefa. Você pode fazer isso:
- Verificando a definição da tarefa no playbook ou role do Ansible.
- Verificando os parâmetros do comando ou módulo da tarefa quanto a erros ou erros de digitação.
- Certificando-se de que a tarefa é compatível com o sistema operacional e as versões de software do nó gerenciado.
Você pode usar a opção --check para executar uma simulação da tarefa e identificar quaisquer problemas potenciais:
ansible-playbook -i inventory.yml playbook.yml --check
Depurando a Execução da Tarefa
Se a sintaxe da tarefa estiver correta, você pode investigar mais a fundo o erro "Falha" depurando a execução da tarefa. Você pode fazer isso:
- Aumentando a verbosidade da saída do Ansible usando as opções
-vvvou-vvvvpara obter informações mais detalhadas sobre a execução da tarefa. - Verificando a saída e as mensagens de erro da tarefa em busca de pistas sobre a causa raiz da falha.
- Revisando os logs do sistema do nó gerenciado em busca de mensagens de erro ou informações relevantes.
Lidando com Tipos Específicos de Erros
Dependendo do tipo de erro "Falha", você pode precisar tomar ações diferentes para solucionar e resolver o problema. Alguns tipos comuns de erros e suas etapas de solução de problemas incluem:
- Erros de Execução de Módulo: Certifique-se de que o módulo está instalado e configurado corretamente no nó gerenciado.
- Erros de Execução de Comando: Verifique se o comando é válido e se o nó gerenciado possui as permissões necessárias para executá-lo.
- Erros de Modificação de Recurso: Certifique-se de que a tarefa está tentando modificar o recurso da maneira esperada e de que o nó gerenciado possui as permissões necessárias para realizar a modificação.
Seguindo essas etapas, você pode solucionar e resolver eficazmente erros "Falha" no Ansible.
Resumo
Ao final deste tutorial do Ansible, você terá um bom entendimento de como depurar eficazmente erros "inatingíveis" e "falha" em seus playbooks do Ansible. Você aprenderá a utilizar as ferramentas de depuração embutidas do Ansible, identificar as causas raiz desses problemas e implementar estratégias para preveni-los e resolvê-los, garantindo que a automação de infraestrutura baseada em Ansible funcione sem problemas.


