ランニング:
- 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
インターネット上で this Q&A となった。
回答の1つ によると、問題はcommand
が原因です。代わりにShell
を使用すると、問題が解決します。解決策を試しましたが、問題は解決しませんでした。
Ansibleからの戻りはjsonです。かなり印刷された:
{
"changed": false,
"cmd": "rabbitmqctl list_vhosts",
"failed": true,
"msg": "[Errno 2] No such file or directory",
"rc": 2
}
msg
に "[Errno 2] No such file or directory"が含まれていることに注意してください。代わりに、rc
はコマンドrabbitmqctl list_vhosts
。
シェル(bash/sh/whatever)でrabbitmqctl
を実行します。 rabbitmqctl
がインストールされていない可能性があります。または、EEAAが正しく示唆しているように、$PATH
。一部のディストリビューション(Debian/Ubuntu)では/usr/sbin
は通常のユーザーのパスには含まれていませんが、ルートには含まれています。
File.ymlにbecome: true
を追加します:
- hosts:
- <enter-IP>
roles:
- 030.sensu
become: true
ansible-playbook file.yml
を発行して実行すると、問題も解決しました。