我正在尝试从Ansible Up and Running书中运行示例。
我的剧本目录
ls
ansible.cfg hosts ubuntu-bionic-18.04-cloudimg-console.log Vagrantfile
主机
testserver ansible_host=127.0.0.1 ansible_port=2222
ansible.cfg
[defaults]
inventory = hosts
remote_user = vagrant
private_key_file = .vagrant/machines/default/virtualbox/private_key
host_key_checking = False
Vagrantfile
config.vm.box = "ubuntu/bionic64"
当我尝试ping
ansible testserver -m ping
我知道了
testserver | FAILED! => {
"changed": false,
"module_stderr": "Shared connection to 127.0.0.1 closed.\r\n",
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
"msg": "MODULE FAILURE",
"rc": 127
}
我可以ssh没问题
ssh vagrant@127.0.0.1 -p 2222 -i /home/miki/playbooks/.vagrant/machines/default/virtualbox/private_key
Welcome to Ubuntu 18.04.2 LTS (GNU/Linux 4.15.0-50-generic x86_64)
System information as of Tue May 21 06:39:46 UTC 2019
System load: 0.0 Processes: 108
Usage of /: 18.5% of 9.63GB Users logged in: 0
Memory usage: 17% IP address for enp0s3: 10.0.2.15
Swap usage: 0%
Last login: Tue May 21 06:32:13 2019 from 10.0.2.2
为什么无法ping通?
答案 0 :(得分:3)
我也遇到了同样的错误。然后找到这个:
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
由于python已安装在本地主机中,而python未安装在远程主机中,因此仅将python安装在远程主机中。并发现问题已解决!!!
答案 1 :(得分:1)
根据错误消息
"module_stdout": "/bin/sh: 1: /usr/bin/python: not found\r\n",
似乎远程主机未安装python。
在受管节点上,您需要一种通信方式,通常是ssh。默认情况下,它使用sftp。如果不可用,可以在ansible.cfg中切换到scp。您还需要Python 2(2.6版或更高版本)或Python 3(3.5版或更高版本)。
Ansible需要在远程主机中使用python。
另外,关于ping
模块it's not the same as ping
shell command.
尝试在远程主机中安装python(手动或使用raw
模块),然后重新运行脚本。
答案 2 :(得分:1)
这仅仅是因为您在终端中混用了Ansible ping
模块和经典的ICMP ping命令。通过上面的链接
这不是ICMP ping,这只是一个简单的测试模块,需要在远程节点上使用Python。
由于上述困惑,您在运行剧本时会误解您得到的明确错误消息:
第一
与127.0.0.1的共享连接已关闭
...这意味着首先打开了连接并且主机可以访问
第二
/ bin / sh:1:1:/ usr / bin / python:找不到
......这意味着未安装python(需要ansible)或不在默认路径中。