Dwie opcje - pierwsza, jak powiedziałeś we własnej odpowiedzi, to ustawienie zmiennej środowiskowej ANSIBLE_HOST_KEY_CHECKING
na False.
Drugim sposobem ustawienia jest umieszczenie go w pliku ansible.cfg, a to jest naprawdę przydatna opcja, ponieważ możesz ustawić to globalnie (na poziomie systemu lub użytkownika, w /etc/ansible/ansible.cfg
lub ~/.ansible.cfg
) lub w pliku konfiguracyjnym w tym samym katalogu jako podręcznik, z którego korzystasz.
Aby to zrobić, utwórz ansible.cfg
plik w jednej z tych lokalizacji i dołącz to:
[defaults]
host_key_checking = False
Możesz tam również ustawić wiele innych przydatnych ustawień domyślnych, takich jak zbieranie faktów na początku gry, scalanie skrótów zadeklarowanych w wielu miejscach lub zastępowanie ich innymi itd. Jest cała duża lista opcji tutaj w ansibl docs.
Edycja: uwaga na temat bezpieczeństwa.
Sprawdzanie poprawności klucza hosta SSH jest znaczącą warstwą bezpieczeństwa dla stałych hostów - jeśli łączysz się z tym samym komputerem wiele razy, warto lokalnie zaakceptować klucz hosta.
W przypadku instancji EC2 o dłuższej żywotności sensowne byłoby zaakceptowanie klucza hosta w przypadku zadania uruchamianego tylko raz podczas początkowego tworzenia instancji:
- name: Write the new ec2 instance host key to known hosts
connection: local
shell: "ssh-keyscan -H {{ inventory_hostname }} >> ~/.ssh/known_hosts"
Nie ma żadnej wartości zabezpieczeń do sprawdzania kluczy hosta w instancjach, które wstajesz dynamicznie i usuwasz zaraz po wykonaniu elementu playbook, ale sprawdzanie kluczy hostów dla maszyn trwałych ma wartość bezpieczeństwa. Dlatego należy zarządzać sprawdzaniem klucza hosta inaczej w zależności od środowiska logicznego.
- Pozostaw sprawdzanie domyślnie włączone (in
~/.ansible.cfg
)
- Wyłącz sprawdzanie klucza hosta w katalogu roboczym dla playbooków, które uruchamiasz z efemerycznymi instancjami (
./ansible.cfg
wraz z playbookiem do testów jednostkowych na maszynach wirtualnych vagrant, automatyzację dla krótkotrwałych instancji ec2)