2016-05-30 68 views
1

我有一个自定义的“主机”与此输出脚本错误“ansible_ssh_private_key_file”:(的一部分)Ansible剧本需要从主机

"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):

正如你所看到的,这个服务器拿错了私有密钥(美国东部代替法兰克福)

我已经在过去使用不同的私钥没有任何问题。某些服务器会获得正确的私钥。普通的SSH(使用正确的密钥)起作用。

$ ansible-playbook --version 
ansible-playbook 2.0.1.0 

运行于AWS EC2(CentOS的)

任何线索?


答:由于Konstantin Suvorov评论 - 我的主机脚本输出重复相同的主机在一个以上的组。在我消除了重复之后 - 这一切运行良好。即使没有.ssh/config解决方法。

谢谢!

+1

我找到了一个解决方法,使这项工作 - 添加到〜/ .ssh/config这样的私钥路径:“IdentityFile〜/ .ssh/prod1-frankfurt.pem IdentityFile〜/ .ssh/prod1-useast .pem“(带有换行符)。但是,真实的日志仍然表现出与之前相同的错误。 –

+0

如果从变量中删除“SSH”,会发生什么情况?例如'ansible_private_key_file'? – ydaetskcoR

+1

请检查您的主机脚本的输出为一个主机在多个组。 如果您的示例中的52.x.y.z在稍后位于主机列表中的production-eu-public-web之后的其他组中定义,则它将使用它的变量。 –

回答

1

主机中的参数混合是主机脚本输出中重复的结果。每个服务器应该只在一个组中。