跑步:
- 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.rc
命令是否缺失?
rc
在本地和远程发布会导致:
bash: rc: command not found...
如果这是一个问题,那么在本地运行剧本也会失败。
2. 这是一个已知问题吗?
"No such file or directory" rc ansible centos
在网上查询后发现此问答。
根据答案之一问题是由 引起的command
。改用shell
可以解决问题。已尝试解决方案,但未能解决问题。
答案1
ansible 返回的是 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
它不包含在普通用户的路径中,但包含在 root 中。
答案2
添加become: true
到 file.yml:
- hosts:
- <enter-IP>
roles:
- 030.sensu
become: true
并通过发行运行它ansible-playbook file.yml
也解决了该问题。