Ansible与多个SSH密钥对

问题描述:

我是Ansible的新手。我能够测试它,并且能够满足我的测试要求。为了在管理节点和客户机节点之间建立连接,我使用了已经创建的ssh密钥对。我怎样才能使用不同的SSH密钥对的另一个节点?作为参考,我正在考虑使用不同密钥对的3 ec2实例。Ansible与多个SSH密钥对

好消息 - 在基本用例中,这很容易。只需在Ansible inventory中使用ansible_ssh_private_key_file参数即可。

下面是我个人的文件盗取一些例子:

$ 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

感谢泰德对我的工作很好。是否可以为同一组的所有服务器使用相同的密钥?我的意思是说,根据上面的例子,如果我对10台测试服务器有相同的密钥,那么我必须分别为所有测试服务器指定关键细节。任何解决方案都在那里,以便我可以为同一组的所有服务器传递相同的密钥。谢谢 – 2014-10-09 07:39:23

+0

@sumitkumar据我所知,你不能将hosts.ini中的变量分组。但是,您可以使用[ssh_config](http://linux.die.net/man/5/ssh_config)文件,这可能会有所帮助。 – tedder42 2014-10-09 15:18:18

+7

你当然可以:http://docs.ansible.com/intro_inventory.html#group-variables [testservers:瓦尔] ansible_ssh_private_key_file =的〜/ .ssh/AWS-testserver.pem – oley 2015-03-24 17:48:36

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

如果你只有一个,你可以把它作为'private_key_file'放在ansible.cfg中。 – tedder42 2016-03-27 19:41:41

+0

目前,我有多个我管理的服务器的私钥。 – Ahmed 2016-03-27 22:28:30