Назад | Перейти на главную страницу

Ansible с ключами SSH

Переход с 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 в параметры командной строки, и он сообщит вам, что пошло не так.