Переход с Puppet на Ansible. Как то, что в нем меньше агентов и работает SSH. Я просто установил две тестовые ВМ. Один как сервер Ansible (да, излишний), а другой как пример клиента (случайный сервер Linux). Все наши серверы используют только аутентификацию по паре публичных и закрытых ключей. Сначала это несколько проблематично для Ansible. Я почти уверен (почти уверен), что Ansible может работать с парами ключей, но я не могу найти хороший пример того, как.
Я создал пару ключей специально для Ansible, выполнив
ssh-keygen -t rsa -b 4096
Затем я скопировал открытый ключ клиенту. Аутентификация по паре ключей отлично работает, когда я тестировал ее по стандартному SSH. Теперь протестируем Ansible. Я поместил тестовый клиент в файл Ansible hosts и использовал единственный синтаксис, который выглядел наполовину правильным, чтобы пара ключей заработала.
[TEST]
10.0.0.5 ansible_ssh_private_key_file=~/.ssh/id_rsa
Когда я пытаюсь запустить только базовый тестовый модуль, такой как этот
sudo ansible all -m ping
Я получаю следующее сообщение об ошибке
10.0.0.5 | FAILED => SSH Error: Permission denied (publickey,password).
while connecting to 10.0.0.5:22
It is sometimes useful to re-run the command using -vvvv, which prints SSH debug output to help diagnose the issue.
Ясно, что мой синтаксис или концептуальное понимание того, как настроить Ansible для использования пар ключей, ошибочны. Какие-либо предложения? Спасибо
ДУХ! Это было прямо в конфигурационном файле ansible (/etc/ansible/ansible.cfg)
# if set, always use this private key file for authentication, same as
# if passing --private-key to ansible or ansible-playbook
private_key_file = /home/<username>/.ssh/id_rsa
Теперь вроде все работает
10.0.0.5 | success >> {
"changed": false,
"ping": "pong"
}
Если вы снова столкнетесь с проблемами SSH с ansible, добавьте -vvv в параметры командной строки, и он сообщит вам, что пошло не так.