我编写了一个脚本来使用 vagrant 运行多个虚拟机,然后我必须使用 ansible 对其进行配置。不幸的是,我的主机是一台 Windows 机器,所以我认为我可以通过将所有虚拟机放入一个 VPN 中,然后从同一 VPN 中的另一台机器配置它们来解决问题。
理论上,它是有效的...我可以毫无问题地 ssh 进入其他机器。但是当我运行我的 ansible 剧本时,ansible 失败了。
起初,我ssh: connect to host 10.1.2.100 [10.1.2.100] port 22: No route to host在运行 ansible 时收到消息“”-vvvv
这是在晚上,我很累,第二天早上这个错误就没有再出现。不确定这是否与我正在进行部署的虚拟机同时重新启动有关,或者接收计算机从那时起被完全销毁和更新有关。无论如何,问题并没有消失。
重新创建两个虚拟机后,现在的结果是:
# 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."}
Run Code Online (Sandbox Code Playgroud)
到目前为止就很清楚了。我通过 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}
Run Code Online (Sandbox Code Playgroud)
好吧,我确保可以通过 ssh 访问主机,非常感谢!Ansible 仍然无法通过,我快要因为想到可能是问题的事情而得脑瘤了。
有什么建议可能是什么问题吗?
此处报告了此问题,并提供了一些解决方法: https ://github.com/ansible/ansible/issues/15321
共识似乎是a。使用ansible_password或 b. -u username在连接参数中使用。然而,任何事情都可能会破坏 SSH 连接,使其对于更高级别的应用程序来说看起来“无法访问”,因此我建议执行该票证中概述的每个步骤。
| 归档时间: |
|
| 查看次数: |
9325 次 |
| 最近记录: |