为什么在Ansible远程执行时,会出现`没有这样的文件或目录“,”rc“`问题?

运行:

- 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来解决这个问题。