Introdução
O Ansible é uma poderosa ferramenta de automação de TI que simplifica a gestão e implantação de infraestruturas. No entanto, ao trabalhar com hosts remotos, a verificação de chave de host padrão do Ansible pode, por vezes, criar desafios. Este tutorial irá guiá-lo através do processo de desativação da verificação de chave de host no Ansible, garantindo uma experiência de automação suave e eficiente.
Compreendendo a Verificação de Chave de Host
A verificação de chave de host é um recurso de segurança no Ansible que ajuda a verificar a identidade dos hosts remotos aos quais você está se conectando. Quando você se conecta a um host remoto pela primeira vez, o Ansible armazenará a chave pública do host em um arquivo known_hosts. Em conexões subsequentes, o Ansible comparará a chave pública do host com a armazenada no arquivo known_hosts para garantir que o host remoto seja o mesmo ao qual você se conectou anteriormente.
Este processo ajuda a prevenir ataques do tipo "homem do meio", onde um atacante poderia interceptar sua conexão e se passar pelo host remoto. Ao verificar a identidade do host, o Ansible garante que você está se comunicando com o host remoto correto.
No entanto, em alguns casos, você pode querer desabilitar a verificação de chave de host, por exemplo, ao trabalhar com hosts efêmeros ou provisionados dinamicamente, ou ao testar seus playbooks do Ansible. Desabilitar a verificação de chave de host pode tornar o processo de conexão mais rápido e conveniente, mas também aumenta o risco de um ataque do tipo "homem do meio".
graph LR
A[Cliente] -- Conectar --> B[Host Remoto]
B -- Chave Pública --> A
A -- Verificar Chave Pública --> C[Arquivo Known Hosts]
| Ação | Descrição |
|---|---|
| Conectar | O cliente se conecta ao host remoto. |
| Chave Pública | O host remoto envia sua chave pública ao cliente. |
| Verificar Chave Pública | O cliente compara a chave pública recebida com a armazenada no arquivo known_hosts. |
Desativando a Verificação de Chave de Host
Para desabilitar a verificação de chave de host no Ansible, você pode usar os seguintes métodos:
Variável de Ambiente
Você pode definir a variável de ambiente ANSIBLE_HOST_KEY_CHECKING para False para desabilitar a verificação de chave de host globalmente:
export ANSIBLE_HOST_KEY_CHECKING=False
ansible-playbook my_playbook.yml
Arquivo de Configuração do Ansible
Você também pode desabilitar a verificação de chave de host definindo a opção host_key_checking no arquivo de configuração do Ansible (/etc/ansible/ansible.cfg ou ~/.ansible.cfg):
[defaults]
host_key_checking = False
Opção de Linha de Comando do Ansible
Alternativamente, você pode desabilitar a verificação de chave de host para um comando específico do Ansible usando a opção --ask-vault-pass ou -k:
ansible-playbook my_playbook.yml --ask-vault-pass -k
Isso solicitará a senha do cofre e desabilitará a verificação de chave de host para o comando atual.
graph LR
A[Ansible] -- Definir Variável de Ambiente --> B[ANSIBLE_HOST_KEY_CHECKING=False]
A -- Definir Arquivo de Configuração --> C[ansible.cfg]
A -- Usar Opção de Linha de Comando --> D[--ask-vault-pass/-k]
Ao desabilitar a verificação de chave de host, você pode simplificar o processo de conexão e facilitar o trabalho com hosts dinâmicos ou efêmeros. No entanto, é importante notar que isso também aumenta o risco de um ataque do tipo "homem do meio", portanto, recomenda-se desabilitar a verificação de chave de host apenas em ambientes não de produção ou quando você tiver certeza de que os hosts remotos são confiáveis.
Configurando a Verificação de Chave de Host
Se você preferir manter a verificação de chave de host habilitada, pode configurá-la de acordo com suas necessidades. Aqui estão algumas opções:
Aceitando Chaves de Host Manualmente
Quando você se conecta a um host remoto pela primeira vez, o Ansible solicitará que você aceite a chave pública do host. Você pode aceitar manualmente a chave digitando "sim" quando solicitado:
A autenticidade do host 'example.com (192.168.1.100)' não pode ser estabelecida.
A impressão digital da chave ECDSA é SHA256:abcd1234efgh5678.
Tem certeza de que deseja continuar a conexão (sim/não)? sim
Isso adicionará a chave pública do host ao arquivo known_hosts e o Ansible a usará para verificar a identidade do host em conexões subsequentes.
Aceitando Chaves de Host Automaticamente
Alternativamente, você pode configurar o Ansible para aceitar automaticamente as chaves de host definindo a opção host_key_auto_add no arquivo de configuração do Ansible:
[defaults]
host_key_auto_add = True
Isso adicionará automaticamente novas chaves de host ao arquivo known_hosts sem solicitar sua confirmação.
Especificando um Arquivo Known Hosts Personalizado
Por padrão, o Ansible usa o arquivo ~/.ssh/known_hosts para armazenar as chaves de host. No entanto, você pode especificar um arquivo known_hosts personalizado definindo a variável de ambiente ANSIBLE_SSH_ARGS:
export ANSIBLE_SSH_ARGS="-o UserKnownHostsFile=/path/to/custom/known_hosts"
ansible-playbook my_playbook.yml
Isso pode ser útil se você quiser manter arquivos known_hosts separados para diferentes ambientes ou projetos.
graph LR
A[Ansible] -- Solicitar Aceitação Manual --> B[arquivo known_hosts]
A -- Aceitar Automaticamente --> C[arquivo known_hosts]
A -- Especificar Arquivo Personalizado --> D[/path/to/custom/known_hosts]
Configurar a verificação de chave de host permite um equilíbrio entre segurança e conveniência, garantindo que suas conexões Ansible sejam seguras, ao mesmo tempo em que permite um fluxo de trabalho eficiente.
Resumo
Desabilitando a verificação de chave de host no Ansible, você pode otimizar seus fluxos de trabalho de automação, reduzir atritos e melhorar a eficiência geral da gestão da sua infraestrutura. Este tutorial forneceu uma visão abrangente do processo, cobrindo a compreensão da verificação de chave de host, as etapas para desabilitá-la e as opções de configuração disponíveis. Com essas informações, você agora pode implementar com confiança essa técnica e aprimorar suas capacidades de automação baseadas no Ansible.


