Fonctionnement:
- name: get vhosts
command: rabbitmqctl list_vhosts
register: vhosts
changed_when: false
en délivrant
Sudo ansible-playbook file.yml
résulte en:
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}
tandis que cette erreur ne se produit pas si ansible est exécuté sur le système lui-même.
Discussion
1. La commande rc
est-elle manquante?
L'émission de rc
à la fois localement car à distance entraîne:
bash: rc: command not found...
Si cela devait être un problème, l'exécution du playbook local échouerait également.
2. Est-ce un problème connu?
Requête "No such file or directory" rc ansible centos
sur Internet a généré ce Q&R .
Selon ne des réponses le problème est causé par command
. L'utilisation de Shell
à la place résoudrait le problème. La solution a été tentée, mais elle n'a pas résolu le problème.
Le retour de ansible est json. Assez imprimé:
{
"changed": false,
"cmd": "rabbitmqctl list_vhosts",
"failed": true,
"msg": "[Errno 2] No such file or directory",
"rc": 2
}
Vous remarquerez que msg
contient "[Errno 2] Aucun fichier ou répertoire de ce type". Au lieu de cela, rc
est le code de retour (sortie), "2" dans votre cas, de la commande rabbitmqctl list_vhosts
.
Dans Shell (bash/sh/que ce soit) exécutez rabbitmqctl
. Vous n'avez peut-être pas installé rabbitmqctl
. Ou, comme le suggère à juste titre l'EEAA, ce n'est pas dans $PATH
. Sur certaines distributions (Debian/Ubuntu) /usr/sbin
n'est pas inclus dans le chemin des utilisateurs normaux, mais il est inclus pour root.
Ajouter become: true
dans le fichier.yml:
- hosts:
- <enter-IP>
roles:
- 030.sensu
become: true
et l'exécuter en émettant ansible-playbook file.yml
a également résolu le problème.