Raison n°1
Vous utilisez une ancienne version d'Ansible qui ne disposait pas du module que vous essayez d'exécuter.
Comment le vérifier ?
-
Ouvrir la liste des modules documentation des modules et trouvez la page de documentation de votre module.
-
Lisez l'en-tête en haut de la page - il indique généralement la version d'Ansible dans laquelle le module a été introduit. Par exemple :
Nouveau dans la version 2.2.
-
Assurez-vous que vous exécutez la version spécifiée d'Ansible ou une version ultérieure. Exécuter :
ansible-playbook --version
Et vérifiez la sortie. Il devrait y avoir quelque chose comme :
ansible-playbook 2.4.1.0
Raison #2
Vous avez essayé d'écrire un rôle et de mettre en place un livre de jeu. my_role/tasks/main.yml
.
En tasks/main.yml
ne doit contenir qu'une liste de tâches. Si vous avez spécifié :
---
- name: Configure servers
hosts: my_hosts
tasks:
- name: My first task
my_module:
parameter1: value1
Ansible essaie de trouver un module d'action nommé hosts
et un module d'action nommé tasks
. Ce n'est pas le cas, ce qui entraîne une erreur.
Solution : ne spécifier qu'une liste de tâches dans le champ tasks/main.yml
fichier :
---
- name: My first task
my_module:
parameter1: value1
Raison #3
Le nom du module d'action est mal orthographié.
C'est assez évident, mais négligé. Si vous utilisez un nom de module incorrect, par exemple users
au lieu de user
Ansible signalera "aucune action détectée dans la tâche".
Ansible a été conçu comme un système hautement extensible. Il ne dispose pas d'un ensemble limité de modules que vous pouvez exécuter et il ne peut pas vérifier "à l'avance" l'orthographe de chaque module d'action.
En fait, vous pouvez écrire et ensuite spécifier votre propre module nommé qLQn1BHxzirz
et Ansible doit respecter cela. Comme il s'agit d'un langage interprété, il ne "découvre" l'erreur que lorsqu'il essaie d'exécuter la tâche.
Raison #4
Vous essayez d'exécuter un module qui n'est pas distribué avec Ansible.
Le nom du module d'action est correct, mais ce n'est pas un module standard distribué avec Ansible.
Si vous utilisez un module fourni par un tiers - un fournisseur de logiciel/matériel ou un autre module partagé publiquement, vous devez d'abord télécharger le module et le placer dans le répertoire approprié.
Vous pouvez le placer soit dans modules
dans le sous-répertoire du playbook ou dans un chemin commun.
Ansible regarde ANSIBLE_LIBRARY
ou le --module-path
argument de ligne de commande.
Pour vérifier quels chemins sont valides, exécutez :
ansible-playbook --version
et vérifier la valeur de :
chemin de recherche du module configuré =
Ansible version 2.4 et plus devrait fournir une liste de chemins.
Raison #5
Vous n'avez vraiment aucune action à l'intérieur de la tâche.
Un module d'action doit être défini pour la tâche. L'exemple suivant n'est pas valide :
- name: My task
become: true