Назад | Перейти на главную страницу

Почему возникает проблема «[Errno 2] No such file or directory», «rc» «при удаленном запуске Ansible?

Бег:

- 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...

Если это будет проблемой, запуск playbook локально также не удастся.


2. Это известная проблема?

Запрос "No such file or directory" rc ansible centos в Интернете привело к этот вопрос и ответ.

В соответствии с один из ответов проблема вызвана 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] Нет такого файла или каталога». Вместо rc это код возврата (выхода), в вашем случае '2', команды rabbitmqctl list_vhosts.

В оболочке (bash / sh / что угодно) запустите rabbitmqctl. У вас может не быть rabbitmqctl установлены. Или, как справедливо предполагает EEAA, его нет в $PATH. В некоторых дистрибутивах (Debian / Ubuntu) /usr/sbin не включен в путь обычных пользователей, но включен для root.

Добавление become: true в файл .yml:

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

и запустив его, выполнив ansible-playbook file.yml решил проблему.