如何告诉ansible使用密钥

时间:2016-02-01 13:24:28

标签: ssh amazon-ec2 ansible

我对ansible不是很熟悉。 我目前遇到的问题如下: 我有一个主节点环境,有多个节点。 我的ansible需要访问我的节点,但无法访问它们。

SSH Error: Permission denied (publickey,gssapi-keyex,gssapi-with-mic).

我能够从我的主节点SSH到每个节点,但只能使用密钥:

ssh -i key-to-node.pem centos@ec2...

是否可以设置某些内容以允许ansible连接到创建的主机?

1 个答案:

答案 0 :(得分:1)

您可以在ansible.cfg

中定义pem文件
private_key_file=key-to-node.pem

如果您没有,请在Playbook所在的位置或/etc/ansible/ansible.cfg内创建一个。

如果您的主机有不同的密钥,您还可以在inventory中定义密钥:

ansible_ssh_private_key_file=key-to-node.pem

此外,如果您已将ssh配置为工作而未显式传递私钥文件(在.ssh/config中),Ansible将自动生效。

在OpenShift页面中添加一个示例,如评论中所述。

我个人从未以这种方式配置它(因为我已经通过~/.ssh/config设置了所有内容,但根据文档,它应该像这样工作:

[masters]
master.example.com ansible_ssh_private_key_file=1.pem

# host group for nodes, includes region info
[nodes]
node1.example.com openshift_node_labels="{'region': 'primary', 'zone': 'east'}" ansible_ssh_private_key_file=2.pem

或者,由于您有多个节点,并且所有节点可能具有相同的键,因此您可以定义单独的nodes:vars部分

[nodes:vars]
ansible_ssh_private_key_file=2.pem