Como desabilitar a verificação de chave de host no Ansible

AnsibleBeginner
Pratique Agora

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.