Modules Ansible

Les modules Ansible sont des bouts de codes écrits principalement en Python (mais tout langage supportant les retours JSON est autorisé) pour modifier l’état d’une propriété d’un hôte. Les modules sont invoqués par l’exécution de tâches soit directement dans la ligne de commande ansible ou dans des livres de jeu avec la commande ansible-playbook.

1. Documentation des modules

Certains trouveront la documentation des modules plus agréable à lire en ligne : https://docs.ansible.com/ansible/latest/modules/modules_by_category.html. Mais on obtient le même résultat localement sur la machine de contrôle hors-ligne :

Pour lister les modules :

ansible-doc -l

Pour appeler directement la documentation d’un module.

ansible-doc <module>
ansible-doc -s <module>

Veuillez vous informer sur les modules suivants :

  • ansible-doc setup
  • ansible-doc ping
  • ansible-doc lineinfile
  • ansible-doc uri

2. Mode Ad-Hoc

La commande ansible offre la possibilité d’exécuter des modules ansible de manière “ad-hoc”, c’est à dire tâche par tâche, commande par commande. L’intérêt est de pouvoir exécuter la même tâche à exécuter en parallèle sur un inventaire (constitué d’un certain nombre de cibles) en tout ou en partie.

ansible --help
Usage: ansible <host-pattern> [options]

Define and run a single task 'playbook' against a set of hosts

En général, la commande s’écrit ansible suivie d’un hôte ou d’un groupe d’inventaire suivie -m nom_de_module suivie l’option d’argument -a "clé=valeur clé=valeur clé=valeur" :

ansible <group_inventaire> -m nom_de_module -a "clé=valeur clé=valeur clé=valeur"

On trouvera utile aussi les options :

  • -e qui permet de placer des variables ponctuelles,
  • -o qui sort la sortie standard en une seule ligne
  • ou encore --limit qui permet de limiter la tâche à certains hôtes seulement de l’inventaure,
  • ou encore -v ou -vvv pour la verbosité.

3. Valeurs de retour de l’exécution des tâches

Ansible génère des valeurs de retour à la suite de l’exécution des tâches.

Return Values

  • backup_file (fichier_de_sauvegarde) : Pour les modules qui implémentent backup=no|yes lors de la manipulation de fichiers, un chemin vers le fichier de sauvegarde créé.
  • changed (modifié) : Un booléen indiquant si la tâche a dû effectuer des modifications.
  • failed (échoué) : Un booléen qui indique si la tâche a échoué ou non.
  • invocation : Informations sur la manière dont le module a été invoqué.
  • msg : Une chaîne avec un message générique relayé à l’utilisateur.
  • rc : Certains modules exécutent des utilitaires en ligne de commande ou sont conçus pour exécuter des commandes directement (raw, shell, commande, etc), ce champ contient le ‘code de retour’ de ces utilitaires.
  • results : Si cette clé existe, elle indique qu’une boucle était présente pour la tâche et qu’elle contient une liste du module normal’résultat’ par élément.
  • skipped (évité) : Un booléen qui indique si la tâche a été ignorée ou non.
  • stderr : Certains modules exécutent des utilitaires en ligne de commande ou sont conçus pour exécuter des commandes directement (raw, shell, commande, etc), ce champ contient la sortie d’erreur de ces utilitaires.
  • stderr_lines : Lorsque stderr est retourné, nous fournissons aussi toujours ce champ qui est une liste de chaînes de caractères, un élément par ligne de l’original.
  • stdout : Certains modules exécutent des utilitaires en ligne de commande ou sont conçus pour exécuter directement des commandes (raw, shell, commande, etc). Cette zone contient l’édition normale de ces utilitaires.
  • stdout_lines : Lorsque stdout est retourné, Ansible fournit toujours une liste de chaînes de caractères, chacune contenant un élément par ligne de la sortie originale.