Amazon ec2 Ansible playbook使用了错误的;ansible“ssh”专用“密钥”文件;来自东道主

Amazon ec2 Ansible playbook使用了错误的;ansible“ssh”专用“密钥”文件;来自东道主,amazon-ec2,ansible,ansible-playbook,ansible-2.x,Amazon Ec2,Ansible,Ansible Playbook,Ansible 2.x,我有一个自定义的“hosts”脚本,其中包含以下输出:(部分) 主机输出看起来不错,我有一个在每个服务器组上运行的剧本但它似乎混淆了私钥。有些服务器获得了正确的密钥,有些则没有。例如(-VVV): 在AWS EC2(centos)上运行 有线索吗 答:如注释所示,“我的主机”脚本输出在多个组中重复了相同的主机。在我消除了重复之后,一切都很顺利。即使没有.ssh/config解决方案 谢谢 主机中的参数混合是主机脚本输出中重复的结果。每台服务器应该正好位于一个组中。我找到了一个解决方法,可以实现

我有一个自定义的“hosts”脚本,其中包含以下输出:(部分)

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

在AWS EC2(centos)上运行

有线索吗


答:如注释所示,“我的主机”脚本输出在多个组中重复了相同的主机。在我消除了重复之后,一切都很顺利。即使没有.ssh/config解决方案


谢谢

主机中的参数混合是主机脚本输出中重复的结果。每台服务器应该正好位于一个组中。

我找到了一个解决方法,可以实现这一点-将私钥路径添加到~/.ssh/config中,如下所示:“IdentityFile~/.ssh/prod1-frankfurt.pem IdentityFile~/.ssh/prod1 useast.pem”(带有换行ofc)。但是ansible日志仍然显示与以前相同的错误。如果从变量中删除“SSH”,会发生什么?例如
ansible\u private\u key\u文件
?请查看主机脚本的输出,其中一台主机位于多个组中。如果您的示例中的52.x.y.z是在主机列表后面的production eu public web以外的其他组中定义的,那么它将使用它的变量。
"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"
    }
},
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"'...
$ ansible-playbook --version
ansible-playbook 2.0.1.0