Бег:
- 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
решил проблему.