2014-10-08 2 views
28

Я новичок в Ansible. Я могу проверить его и его работу с моим тестовым требованием. Для соединения между узлом управления и узлом клиента я использую уже созданную пару ssh. Как я могу использовать другой узел с разными парами ключей SSH? Для справки я рассматриваю 3 ec2-экземпляр с разными парами ключей.Несущаясь с несколькими ключевыми парами SSH

ответ

34

Хорошая новость - в основном варианте использования, это довольно легко. Просто используйте параметр ansible_ssh_private_key_file в вашем Ansible inventory.

Вот некоторые примеры Украденных из моего личного дела:

$ cat hosts.ini 

[server1] 
54.1.2.3 ansible_ssh_private_key_file=~/.ssh/server1.pem 

[testservers] 
ec2-54-2-3-4.compute-1.amazonaws.com ansible_ssh_private_key_file=~/.ssh/aws-testserver.pem ansible_ssh_user=ubuntu 
ec2-54-2-3-5.compute-1.amazonaws.com ansible_ssh_private_key_file=~/.ssh/aws-testserver.pem ansible_ssh_user=ubuntu 

[piwall] 
10.0.0.88 ansible_ssh_private_key_file=~/.ssh/raspberrypi.pem ansible_ssh_user=pi 
+1

Спасибо, tedd, что он работает отлично для меня. Можно ли использовать один и тот же ключ для всех серверов той же группы. Я хочу сказать, если у меня есть тот же ключ для 10 тестовых серверов в соответствии с приведенным выше примером, я должен отдельно указывать ключевые данные для каждого тестового сервера. Любое решение существует, поэтому я могу передать один и тот же ключ для всего сервера той же группы. Спасибо –

+0

@sumitkumar, насколько я знаю, вы не можете группировать переменные в hosts.ini. Однако вы можете использовать файл [ssh_config] (http://linux.die.net/man/5/ssh_config), что может помочь. – tedder42

+7

Вы, конечно, можно: http://docs.ansible.com/intro_inventory.html#group-variables [testservers: вары] ansible_ssh_private_key_file = ~/.ssh/AWS-testserver.pem – oley

21

tedder42 является правильным, однако, есть лучший способ сделать это.

См. ansible_ssh_private_key_filehere.

у меня в хост-файлы в следующих

# SSH Keys configuration 

[all_servers:vars] 
ansible_ssh_private_key_file = <YOUR PRIVATE KEY LOCATION> 


# Server configuration 
[all_servers:children] 
elastic_servers 
nginx_servers 

[elastic_servers] 
44.22.11.22 
44.55.66.77 
22.11.22.33 

[nginx_servers] 
22.24.123.123 
233.111.222.11 

Если у вас есть конфигурация несколько ключей, вы можете сделать что-то вроде следующего

[nginx:vars] 
ansible_ssh_private_key_file = <YOUR PRIVATE KEY LOCATION> 
[app:vars] 
ansible_ssh_private_key_file = <YOUR 2nd PRIVATE KEY LOCATION> 

[nginx:children] 
nginx_servers 

[app:children] 
app_servers 

[nginx_servers] 
1.2.3.4 
[app_servers] 
5.5.5.5 
6.6.6.6 

Это путь чище, чем tedder42 ответ. Это полезно, если у вас несколько ключей для нескольких серверов.

В противном случае вы можете включить свой ключ в файл ansible.cfg.

+2

Если у вас его есть, вы можете поместить его в ansible.cfg как 'private_key_file'. – tedder42

+0

В настоящее время у меня есть несколько личных ключей для серверов, которыми я управляю. – Ahmed

Смежные вопросы