Blog ENI : Toute la veille numérique !
🐠 -25€ dès 75€ 
+ 7 jours d'accès à la Bibliothèque Numérique ENI. Cliquez ici
Accès illimité 24h/24 à tous nos livres & vidéos ! 
Découvrez la Bibliothèque Numérique ENI. Cliquez ici

Playbooks

Définition

Il peut s’avérer qu’exécuter une à une les différentes commandes ad hoc devienne assez rapidement rébarbatif. D’autant plus qu’elles exécutent une tâche simple ponctuellement sur un ou plusieurs hôtes gérés.

S’il faut lancer des tâches plus élaborées sur des hôtes et pouvoir les reproduire facilement, il est alors possible d’utiliser les playbooks, lesquels représentent un ensemble de scripts d’automatisation que l’on appelle « plays ».

Les playbooks définissent, donc, les tâches de gestion de configuration à accomplir sur les hôtes gérés.

Écriture d’un playbook

Vous pouvez concevoir des playbooks de bout en bout ou à partir de modules disponibles au sein de la plateforme, voire depuis la communauté d’utilisateurs.

Le format des fichiers playbooks est YAML. Nous avons déjà rencontré ce langage dans le chapitre Présentation de Ansible pour la rédaction des inventaires. Vous allez de nouveau utiliser l’éditeur de texte vi avec des paramètres spécifiques à YAML dans le fichier de configuration ~/.vimrc.

Exemple

Avant de commencer, créez un répertoire de travail nommé workspace :

root@server1 ~]# mkdir workspace ; cd workspace 
[root@server1 workspace]# 

Sur les hôtes server2 et server3, qui sont des plateformes Linux, créez un utilisateur avec les caractéristiques suivantes :

Nom : john

Groupe primaire : users

Groupes supplémentaires : adm et sys.

Vous pouvez appliquer la commande ad hoc ci-dessous pour effectuer cette tâche :

[root@server1 workspace]# ansible -m user -a "name=john \ 
> group=users groups=adm,sys state=present" all 
[root@server1 workspace]# 

Le module user de Ansible gère les comptes utilisateurs des plateformes Linux, macOS et Unix. Le module à utiliser, quant aux plateformes Microsoft Windows, est win_user.

Passez des arguments au module user avec le commutateur...

Exécution de playbooks

Sur le nœud de contrôle, la commande ansible-playbook exécute les playbooks. Il faut lui fournir en tant qu’argument le nom du playbook à utiliser.

1. Principe de fonctionnement

La définition des attributs name dans un playbook qui contient plusieurs plays et tâches permet de surveiller la progression de leur exécution.

Gathering Facts est une tâche particulière qui, généralement, est exécutée automatiquement par le module setup au début d’un play. Ce sujet est abordé dans le chapitre Gestion des faits.

Les plays et les tâches sont traités dans l’ordre dans lequel ils sont écrits au sein du playbook. Lors de leur exécution, la sortie générée indique les résultats de chaque tâche effectuée.

Exécution du playbook user_john.yml

[root@server1 workspace]# ansible-playbook user_john.yml 
 
PLAY [Création de l'utilisateur john]***************************** 
 
TASK [Gathering Facts]******************************************** 
ok: [172.16.32.1] 
ok: [172.16.32.2] 
 
TASK [john Doe]*************************************************** 
changed: [172.16.32.1] 
changed: [172.16.32.2] 
 
PLAY RECAP******************************************************** 
172.16.32.1   : ok=2  changed=1  unreachable=0  failed=0  skipped=0 
rescued=0  ignored=0 
172.16.32.2   : ok=2  changed=1  unreachable=0  failed=0  skipped=0 
rescued=0  ignored=0 
 
[root@server1 workspace]# 

Vous pouvez, sans crainte, exécuter un playbook plusieurs fois du fait que les tâches au sein de celui-ci sont idempotentes.

2. Verbosité des playbooks

La commande ansible-playbook fournit, par défaut, peu d’informations...