Ansible playbook 从主机获取了错误的 "ansible_ssh_private_key_file"

Ansible playbook takes the wrong "ansible_ssh_private_key_file" from hosts

我有一个带有此输出的自定义 'hosts' 脚本:(部分)

"production-public-web": {
    "hosts": [
        "52.x.y.z"
    ],
    "vars": {
        "ansible_ssh_private_key_file": "/home/ec2-user/.ssh/prod1-frankfurt.pem"
    }
},
"production-internal": {
    "hosts": [
        "172.x.y.z"
    ],
    "vars": {
        "ansible_ssh_private_key_file": "/home/ec2-user/.ssh/prod1-useast.pem"
    }
},

主机输出看起来不错,我有一个在每个服​​务器组上运行的剧本。 但它似乎混淆了私钥。有些服务器获得正确的密钥,有些则没有。例如 (-vvvv):

PLAY [production-eu-public-web] *******************

TASK [setup] *********************************************
<52.x.y.z> ESTABLISH SSH CONNECTION FOR USER: None
<52.x.y.z> SSH: EXEC ssh -C -vvv -o ControlMaster=auto 
-o     ControlPersist=60s -o StrictHostKeyChecking=no 
-o 'IdentityFile="/home/ec2-user/.ssh/prod1-useast.pem"'...

如您所见,此服务器使用了错误的私钥(us-east 而不是 frankfurt)

我过去使用过不同的私钥,没有任何问题。某些服务器确实获得了正确的私钥。常规 SSH(使用正确的密钥)有效。

$ ansible-playbook --version
ansible-playbook 2.0.1.0

运行 AWS EC2 (centos)

有线索吗?


回答:正如 Konstantin Suvorov 评论的那样 - 我的 Hosts 脚本输出在多个组中重复了相同的主机。在我消除了重复之后 - 一切都很好。即使没有 .ssh/config 解决方法。

谢谢!

主机中的参数混淆是主机脚本输出中重复的结果。每个服务器都应该属于一组。