web-dev-qa-db-ja.com

Ansibleがリモートで実行されたときに、 `" [Errno 2] No such file or directory "、" 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。 rcコマンドがありませんか?

ローカルでrcをリモートで発行すると、次の結果になります。

bash: rc: command not found...

これが問題になる場合は、ローカルでのプレイブックの実行も失敗します。


2。これは既知の問題ですか?

クエリ"No such file or directory" rc ansible centosインターネット上で this Q&A となった。

回答の1つ によると、問題はcommandが原因です。代わりにShellを使用すると、問題が解決します。解決策を試しましたが、問題は解決しませんでした。

8
030

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は通常のユーザーのパスには含まれていませんが、ルートには含まれています。

9
jscott

File.ymlにbecome: trueを追加します:

- hosts:
    - <enter-IP>
  roles:
    - 030.sensu
  become: true

ansible-playbook file.ymlを発行して実行すると、問題も解決しました。

1
030