我写了一个脚本来使用vagrant运行几个vms,然后我必须使用ansible。不幸的是我的主机是一台Windows机器,所以我认为我可以通过将所有vms放入一个vpn然后从同一个VPN中的另一台机器配置它来解决问题。
从理论上讲,它有效......我可以毫不费力地进入其他机器。但是当我运行我的ansible剧本时,ansible就失败了。
起初我收到了消息" ssh: connect to host 10.1.2.100 [10.1.2.100] port 22: No route to host
"使用-vvvv
这是在晚上,我很累,第二天早上这个错误没有再发生。不确定它是否与vm有关,我在此期间重新启动部署,或者接收机器从那时起被彻底销毁和使用。无论如何,问题并没有消失。
现在,在重新创建两个vms之后结果:
# ansible-playbook -i vms -k -u vagrant vms.yml -vvvv
result:
<10.1.2.100> ESTABLISH SSH CONNECTION FOR USER: vagrant <10.1.2.100>
SSH: EXEC sshpass -d14 ssh -C -vvv -o ServerAliveInterval=50 -o
User=vagrant -o ConnectTimeout=10 -tt 10.1.2.100 '( umask 22 && mkdir
-p "$( echo $HOME/.ansible/tmp/ansible-tmp-1455781388.36-25193904947084 )" && echo
"$( echo $HOME/.ansible/tmp/ansible-tmp-1455781388.36-25193904947084
)" )' fatal: [10.1.2.100]: FAILED! => {"failed": true, "msg": "ERROR!
Using a SSH password instead of a key is not possible because Host Key
checking is enabled and sshpass does not support this. Please add
this host's fingerprint to your known_hosts file to manage this
host."}
到目前为止很清楚。我ssh到另一个实例中将它添加到已知主机。这没有任何麻烦。
回到ansible,我再次尝试相同的命令。结果现在是:
<10.1.2.100> ESTABLISH SSH CONNECTION FOR USER: vagrant <10.1.2.100>
SSH: EXEC sshpass -d14 ssh -C -vvv -o ServerAliveInterval=50 -o
StrictHostKeyChecking=no -o User=vagrant -o ConnectTimeout=10 -tt
10.1.2.100 '( umask 22 && mkdir -p "$( echo $HOME/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916 )" &&
echo "$( echo
$HOME/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916 )" )'
<10.1.2.100> PUT /tmp/tmpXQKa8Z TO
/home/vagrant/.ansible/tmp/ansible-tmp-1455782149.99-271768166468916/setup
<10.1.2.100> SSH: EXEC sshpass -d14 sftp -b - -C -vvv -o
ServerAliveInterval=50 -o StrictHostKeyChecking=no -o User=vagrant -o
ConnectTimeout=10 '[10.1.2.100]' fatal: [10.1.2.100]: UNREACHABLE! =>
{"changed": false, "msg": "ERROR! SSH Error: data could not be sent to
the remote host. Make sure this host can be reached over ssh",
"unreachable": true}
好吧,我确保ssh可以访问主机,非常感谢! Ansible仍然无法通过,而且我想要解决可能存在问题的事情,从而得脑肿瘤。
有什么建议可能是什么问题?
答案 0 :(得分:1)
此处报告此问题,但有一些解决方法: https://github.com/ansible/ansible/issues/15321
共识似乎要么是a。使用ansible_password
或b。在连接参数中使用-u username
。但是,任何数量的东西都可能破坏SSH连接,使其看起来“无法访问”更高级别的应用程序,因此我建议您完成该故障单中列出的每个步骤。