运行:
- name: get vhosts command: rabbitmqctl list_vhosts register: vhosts changed_when: false
通过发行
sudo ansible-playbook file.yml
结果是:
TASK [030.sensu : get vhosts] ************************************************** fatal: [IP]: FAILED! => {"changed": false, "cmd": "rabbitmqctl list_vhosts", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2}
而如果在系统上运行ansible,则不会发生此错误。
讨论
1.是否缺lessrc命令?
在本地发出rc远程结果:
bash: rc: command not found...
如果这将是一个问题,那么在本地运行剧本也将失败。
这是一个已知的问题吗?
在网上查询"No such file or directory" rc ansible centos导致这个问答 。
根据其中一个答案 ,问题是由command造成的。 用shell来解决这个问题。 该解决scheme已经尝试,但没有解决问题。
json的回报是json。 漂亮的印刷:
{ "changed": false, "cmd": "rabbitmqctl list_vhosts", "failed": true, "msg": "[Errno 2] No such file or directory", "rc": 2 }
你会注意到msg包含“[Errno 2]没有这样的文件或目录”。 相反, rc是您的情况下的返回(退出)代码“2”的命令rabbitmqctl list_vhosts 。
在shell(bash / sh / whatever)中运行rabbitmqctl 。 您可能没有安装rabbitmqctl 。 或者,正如EEAA正确地表明的那样,它不在$PATH 。 在一些发行版(Debian / Ubuntu)上, /usr/sbin不包含在普通用户的path中,但是它包含在root用户的path中。
添加become: true的file.yml:
- hosts: - <enter-IP> roles: - 030.sensu become: true
并通过发行ansible-playbook file.yml来解决这个问题。