我在ubuntu 14.04上的ansible 1.9.4中遇到了一个奇怪的ssh相关错误。
在我的库存文件中,我在组中定义了几个服务器:
[group1]
g1-server1
g1-server2
[group2]
g2-server1
g2-server2
....
[dev]
g1-server1 ....
g2-server1 ...
etc.....
现在所有服务器都指向localhost进行测试。我还为每个服务器分配了几个变量。
我可以按任务(使用标签)运行playbook任务,有时相同的任务有效,有时它不会。如果我运行整个剧本,它将在随机位置停止并出现此错误:
fatal: [hostname] => SSH Error: Shared connection to 127.0.0.1 closed.
It is sometimes useful to re-run the command using -vvvv, which prints
SSH debug output to help diagnose the issue.
我怀疑从localhost到localhost可能同时存在许多ssh连接的问题,但我不知道如何确认这一点。此外,如果将任务标记为run_once:true,我在任务上取得了更大的成功。
有没有人对此有任何想法?
注意:我试图在这上找到关于互联网的一些资源;有几个与服务器重启有关的讨论。但请记住,我没有在这里重新启动任何东西。
答案 0 :(得分:2)
如果我找到了你,你就会打开多个连接来做同样的事情(例如更改相同的文件)。这当然会导致不可预测的结果。
尽管在这种测试中我没有看到任何意义,但您可以消除错误设置
serial: 1
在您的剧本中,请参阅:http://docs.ansible.com/ansible/playbooks_delegation.html#rolling-update-batch-size
将导致任务一个接一个地运行
答案 1 :(得分:1)
我有一个类似的问题和序列:1不是我的选择。我更新了ansible.cfg并设置了属性
[ssh_connection]
ssh_args = -o ControlMaster=no -o ControlPersist=60s
主要将ControlMaster设置为no。这使我的剧本更稳定。