Ansible - 8 Boucles Ansible : créer plusieurs utilisateurs

Pour créer plusieurs utilisateurs système, on peut répéter la même tâche autant de fois que nécessaire. Une boucle évite cette répétition : une seule tâche s'exécute pour chaque élément de la liste. Cette leçon montre aussi comment transmettre deux valeurs par élément à l'aide de dictionnaires.

Une tâche répétée dans une boucle

Le module user crée des utilisateurs sur la machine cible. Pour un seul utilisateur, une tâche suffit. Pour plusieurs, la boucle exécute la même tâche pour chaque élément. La valeur de l'élément courant est donnée par la variable item, placée entre doubles accolades.

- name: Créer les utilisateurs
  user:
    name: "{{ item }}"
  loop:
    - joe
    - georges

Passer plusieurs valeurs avec des dictionnaires

Pour créer un utilisateur, il faut un nom et un identifiant. Chaque élément de la boucle devient donc un dictionnaire contenant ces deux clés. Dans la tâche, chaque valeur se lit avec item.name et item.uid. Un dictionnaire peut aussi s'écrire sur une seule ligne.

- name: Créer les utilisateurs
  user:
    name: "{{ item.name }}"
    uid: "{{ item.uid }}"
  loop:
    - { name: joe, uid: <uid-joe> }
    - { name: georges, uid: <uid-georges> }

Une autre syntaxe de boucle

La leçon présente aussi la syntaxe with_items comme une autre façon d'écrire une boucle. D'autres variantes with_ existent pour des cas particuliers, comme l'action sur plusieurs fichiers ou la connexion à plusieurs bases de données.

En résumé

Une boucle permet d'exécuter une seule tâche pour chaque élément d'une liste. Chaque élément peut être un dictionnaire avec plusieurs valeurs, accessibles avec item suivi du nom de la clé. La syntaxe with_items est une autre façon d'écrire une boucle.

Points clés

  • Une boucle évite de dupliquer une tâche pour chaque utilisateur.
  • La variable item contient la valeur de l'élément courant.
  • Un dictionnaire permet de transmettre plusieurs valeurs par élément.
  • Chaque clé du dictionnaire se lit avec item.nom_de_la_cle.
  • La syntaxe with_items est une alternative plus ancienne.

Questions fréquentes

Pourquoi utiliser une boucle plutôt que dupliquer la tâche ?

Une boucle rend le playbook plus court et plus organisé. Une seule tâche suffit pour créer tous les utilisateurs.

Comment passer le nom et l'identifiant de chaque utilisateur ?

Utilisez un dictionnaire par utilisateur, avec une clé name et une clé uid. Dans la tâche, ces valeurs se lisent avec item.name et item.uid.

Qu'est-ce qu'un tableau de dictionnaires ?

C'est une liste dont chaque élément est un dictionnaire, c'est-à-dire un ensemble de paires clé valeur. Il peut être écrit sur une seule ligne.