/* Испробовано на Ansible ver.2.3 */
Когда возникла необходимость поменять часть строк в файлах sudoers и hosts на серверах Centos 6.8, я решил после настройки playbook’ов сначала пропинговать сервера и проверить все ли будет хорошо после запуска ansible. Т. к. на вашем сервере (назовем его master) нет отпечатка fingerprint ssh ключа, то при первом подключении получите ошибку ниже:
fatal: [server.all.tmp]: FAILED! => {"failed": true, "msg": "Using a SSH password instead of a key is not possible because Host Key checking is enabled and sshpass does not support this. Please add this host's fingerprint to your known_hosts file to manage this host."}
Можно использовать аргумент
--ask-become-pass
и вводить каждый раз пароль root’а нового хоста, а т. к. я ленивый, при первой проверке хостов пингом я добавил аргумент не проверять ключ. Но он добавится в файл known_hosts.
Итак, файл playping.yml:
--- - name: Ping serves hosts: app.all.tmp #указываете свои хосты или группу хостов tasks: - name: Ping ip servers ping:
В файле hosts для первого раза указываю все логины и пароли от root’а, можно их зашифровать с помощью vault:
[app.all.tmp] app.r.server ansible_host=192.168.1.100 ansible_user=root ansible_password=root ansible_become=true ansible_become_pass=root
Первые user и password для подключения через ssh, ansible_become=true для входа под пользователем по умолчанию root, ansible_become_pass указываем пароль sudo. Это также необходимо для редактирования файлоы sudoers, чисто мне нужно было.
Запускаем командой:
ansible-playbook playping.yml --ssh-common-args='-o StrictHostKeyChecking=no'
Fingerprint ssh ключа будет сохранен в файл known_hosts вашего пользователя, вручную нет необходимости подтверждать сохранение ключ. Дальше можно приступать к использованию ansible.