无法通过临时命令从 ansible ping vagrant

无法通过临时命令从 ansible ping vagrant

我现在正在使用 vagrant。

我可以从本地终端 ping 虚拟机。

我想使用 ansible 来 ping 那个 vagrant 虚拟机:

$ ansible 192.168.33.101 -m ping -u root

但出现错误:

192.168.33.101 | UNREACHABLE! => {
    "changed": false,
    "msg": "Failed to connect to the host via ssh: Permission denied (publickey,password).\r\n",
    "unreachable": true
}

/etc/ansible/hosts我在文件中添加了该IP :

192.168.33.101

本地和虚拟机都安装了 ssh。那为什么无法连接呢?

答案1

您需要配置 ssh 连接。Ansibleping模块命名令人困惑。该ping模块实际上建立了一个 ssh 连接来验证是否能够登录以及是否配置了可用的 python。

因此,它ping command可以告诉您与远程主机的网络连接正在正常工作,并ping module告诉您 Ansible 能够在远程主机上运行命令。

看着那(这官方文档如何设置与你的 Vagrant 盒的 ssh 连接。

基本上你需要这样的东西:

ansible-playbook --private-key=~/.vagrant.d/insecure_private_key -u vagrant -i .vagrant/provisioners/ansible/inventory/vagrant_ansible_inventory playbook.yml

对于临时命令如下:

ansible --private-key=~/.vagrant.d/insecure_private_key -u vagrant ...

答案2

我做了以下工作来使其工作。我将主机的公钥添加到 vagrant vm 中的授权密钥中。

# on host machine, copy the public key
cat ~/.ssh/id_rsa.pub

# on vagrant session
sudo vi ~/.ssh/authorized_keys
# add the above copied key here and exit

现在您可以从主机访问并运行 ansible 到 vagrant 机器。

很多时候,默认情况下,vagrant machine 上的用户是流浪汉,因此你也可以运行以下命令

ansible 192.168.33.101 -m ping -u vagrant

希望这可以帮助!

相关内容