具有多个SSH密钥对的Ansible

时间:2014-10-08 11:49:29

标签: ansible

我是Ansible的新手。我可以测试它,并且我的测试要求可以正常工作。为了在管理节点和客户端节点之间建立连接,我使用已经创建的ssh密钥对。如何使用具有不同SSH密钥对的另一个节点?作为参考,我正在考虑具有不同密钥对的3 ec2-instance。

2 个答案:

答案 0 :(得分:41)

好消息 - 在基本用例中,这很容易。只需使用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 :(得分:23)

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文件中。