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