【发布时间】:2018-07-28 07:50:28
【问题描述】:
我编写了一个脚本来使用 vagrant 运行多个虚拟机,然后我必须使用 ansible 进行配置。不幸的是,我的主机是一台 Windows 机器,所以我想我可以通过将所有 vm 放入一个 vpn 中,然后从同一 vpn 中的另一台机器上配置它们来解决这个问题。
理论上,它可以工作...我可以毫无问题地通过 ssh 连接到其他机器。但是当我运行我的 ansible playbook 时,ansible 失败了。
起初我在使用 -vvvv 运行 ansible 时收到消息“ssh: connect to host 10.1.2.100 [10.1.2.100] port 22: No route to host”
这是在晚上,我很累,第二天早上这个错误没有再次出现。不确定这是否与我正在进行部署的 vm 有关,因为同时重新启动,或者从那时起接收机器被完全破坏和升级。无论如何,问题并没有消失。
现在的结果,在重新创建两个虚拟机后:
# 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 仍然无法通过,而且我正因为思考可能是问题的事情而患上脑瘤。
任何建议可能是什么问题?
【问题讨论】:
-
因此,Vagrant 创建了几个接口,
vagrant ssh命令将使用 127.0.01,主机上的高端口转发到来宾 VM 上的 22,而不是 Ansible 使用的 10.1.2.100 地址这里。您能否粘贴 Ansible 使用的确切 ssh 命令的输出 -ssh -vvv vagrant@10.1.2.100或类似的东西?