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
答
tedder42是正确的,然而,有这样做的更好的方法。
请参阅ansible_ssh_private_key_file
here。
我在我的主机文件中的以下
# 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文件中。
感谢泰德对我的工作很好。是否可以为同一组的所有服务器使用相同的密钥?我的意思是说,根据上面的例子,如果我对10台测试服务器有相同的密钥,那么我必须分别为所有测试服务器指定关键细节。任何解决方案都在那里,以便我可以为同一组的所有服务器传递相同的密钥。谢谢 – 2014-10-09 07:39:23
@sumitkumar据我所知,你不能将hosts.ini中的变量分组。但是,您可以使用[ssh_config](http://linux.die.net/man/5/ssh_config)文件,这可能会有所帮助。 – tedder42 2014-10-09 15:18:18
你当然可以: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