Duas opções - a primeira, como você disse em sua própria resposta, é definir a variável de ambiente ANSIBLE_HOST_KEY_CHECKING
como False.
A segunda maneira de configurá-lo é colocá-lo em um arquivo ansible.cfg, e essa é uma opção realmente útil, pois você pode configurá-lo globalmente (no nível do sistema ou do usuário, no /etc/ansible/ansible.cfg
ou~/.ansible.cfg
) ou em um arquivo de configuração no mesmo diretório como o manual que você está executando.
Para fazer isso, crie um ansible.cfg
arquivo em um desses locais e inclua o seguinte:
[defaults]
host_key_checking = False
Você também pode definir muitos outros padrões úteis lá, como coletar ou não fatos no início de uma peça, mesclar hashes declarados em vários locais ou substituir um por outro, e assim por diante. Há uma lista grande de opções aqui nos documentos Ansible.
Edit: uma nota sobre segurança.
A validação da chave do host SSH é uma camada de segurança significativa para hosts persistentes - se você estiver se conectando à mesma máquina várias vezes, é valioso aceitar a chave do host localmente.
Para instâncias do EC2 de maior duração, faria sentido aceitar a chave do host com uma tarefa executada apenas uma vez na criação inicial da instância:
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
Não há valor de segurança para verificar as chaves do host nas instâncias em que você se levanta dinamicamente e remove logo após a execução do playbook, mas há valor de segurança na verificação de máquinas persistentes nas chaves do host. Portanto, você deve gerenciar a verificação de chave do host de maneira diferente por ambiente lógico.
- Deixe a verificação ativada por padrão (em
~/.ansible.cfg
)
- Desabilite a verificação de chave do host no diretório de trabalho para playbooks executados em instâncias efêmeras (
./ansible.cfg
junto com o playbook para testes de unidade contra VMs vagantes, automação para instâncias ec2 de curta duração)