具有多个SSH密钥对的Ansible

具有多个SSH密钥对的Ansible,ansible,Ansible,我不熟悉Ansible。我能够测试它,它的工作与我的测试要求很好。用于在管理节点和客户机节点之间建立连接,我正在使用已创建的ssh密钥对。如何使用另一个具有不同SSH密钥对的节点?作为参考,我正在考虑使用不同密钥对的3个ec2实例 好消息-在基本用例中,这相当简单。只需在应用程序中使用ansible\u ssh\u private\u key\u文件参数即可 以下是从我的个人档案中盗取的一些例子: $ cat hosts.ini [server1] 54.1.2.3 ansible_ssh_p

我不熟悉Ansible。我能够测试它,它的工作与我的测试要求很好。用于在管理节点和客户机节点之间建立连接,我正在使用已创建的ssh密钥对。如何使用另一个具有不同SSH密钥对的节点?作为参考,我正在考虑使用不同密钥对的3个ec2实例

好消息-在基本用例中,这相当简单。只需在应用程序中使用
ansible\u ssh\u private\u key\u文件
参数即可

以下是从我的个人档案中盗取的一些例子:

$ 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\u ssh\u private\u key\u文件

我的主机文件中有以下内容

# 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
#SSH密钥配置
[所有_服务器:vars]
ansible\u ssh\u私钥\u文件=
#服务器配置
[所有_服务器:子服务器]
弹性服务器
nginx_服务器
[弹性服务器]
44.22.11.22
44.55.66.77
22.11.22.33
[nginx_服务器]
22.24.123.123
233.111.222.11
如果您有多个密钥配置,则可以执行以下操作

# 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
[nginx:vars]
ansible\u ssh\u私钥\u文件=
[应用程序:vars]
ansible\u ssh\u私钥\u文件=
[nginx:儿童]
nginx_服务器
[应用程序:儿童]
应用程序服务器
[nginx_服务器]
1.2.3.4
[应用程序服务器]
5.5.5.5
6.6.6.6
这比tedder42答案更清晰。如果您有多个服务器的多个密钥,这将非常有用


否则,您可以将密钥包含在ansible.cfg文件中

谢谢泰德,这对我来说很好。是否可以对同一组的所有服务器使用相同的密钥。我的意思是说,根据上面的示例,如果我有10个测试服务器的相同密钥,我必须分别指定所有测试服务器的密钥详细信息。任何解决方案都存在,这样我就可以为同一组的所有服务器传递相同的密钥。Thanks@sumitkumar据我所知,您无法将hosts.ini中的变量分组。但是,您可以使用一个文件,这可能会有所帮助。您当然可以:[testservers:vars]ansible\u ssh\u private\u key\u file=~/.ssh/aws-testserver.pemsho谢@oley!请随意编辑我的答案(或自己回答)。@josh
id\u rsa
是您的pem。这只是“个人密钥”的简写。如果你只有一个,你可以把它放在ansible.cfg中,作为
private\u key\u文件
。目前,我管理的服务器有多个私钥。