Ansible – Création d’un playbook

1) Présentation

Dans ce tutoriel, nous allons créer et exécuter un playbook ansible afin d’automatiser des tâches d’administration (Ex : mise à jour des paquets, Création d’utilisateurs et bien d’autres) sur vos serveurs locaux ou vos VPS.
Ce tutoriel s’appuie sur une installation d’ansible réalisée à l’aide du tutoriel Ansible – Installation et configuration.


2) Connexion ansible

Pour commencer, se connecter en tant qu’utilisateur ansible (Si vous avez suivi le tutoriel Ansible – Installation et configuration).


3) Création arborescence ansible

Création d’un répertoire racine /ansible et des sous-répertoires prod et test afin de séparer l’environnement de test de celui de production. Les répertoires prod et test présente ensuite la même sous-arborescence.

3.1) Créer l’arborescence

3.2) Explication de l’arborescence d’ansible

3.3) Ajuster les droits pour l’utilisateur ansible

Si vous disposez d’un utilisateur ansible spécifique (Ex : ansible), il faudra lui donner les droits sur le répertoire /ansible.


4) Création de rôles ansible

Nous allons créer 3 rôles grâce à la commande ansible-galaxy.
La commande ansible-galaxy init permet de créer l’arborescence du rôle ansible.

  • packages_upgrade : Pour mettre à jour tous les paquets du système
  • packages_install : Pour installer des paquets spécifiques
  • users_create : Pour créer ou modifier des utilisateurs

4.1) Créer l’arborescence des rôles

4.1.1) Role packages_ugrade
4.1.2) Role packages_install
4.1.3) Role users_create
4.1.4) Explication de l’arborescence d’un rôle ansible

4.2) Simplifier l’arborescence des rôles

L’arborescence d’un rôle générée par ansible-galaxy est exhaustive. Il est recommandé de l’utiliser si vous comptez partager le rôle avec la communauté ou si vous travaillez en équipe.
Cependant, dans le cadre de ce tutoriel, elle complexifie la lecture avec des répertoires et des fichiers que nous n’utiliserons pas.
Nous supprimerons donc certains éléments afin de simplifier la lecture du rôle.

4.2.1) Suppression des élements non-essentiels
4.2.2) Arborescence simplifiée des roles ansible

4.3) Rôle de mise à jour des paquets

4.3.1) Ajouter des tâches au rôle packages_upgrade

Contenu du fichier :

ansible.builtin.apt est un module ansible permettant de gérer les paquets via apt.
name: "*" signifie que l’on souhaite agir sur tous les paquets.
state: "latest" indique que l’on veut que chaque paquet soit dans sa dernière version disponible.
update_cache: "yes" permet de faire un apt update avant l’installation.

4.4) Rôle ansible d’installation de paquets

4.4.1) Ajouter des tâches au rôle packages_install

Contenu du fichier :

Toujours avec le module ansible.builtin.apt mais cette fois, nous utilisons une variable {{role_packages_install_packages}} pour définir la liste des paquets. Une valeur sera affectée à cette variable un peu plus loin dans le tutoriel.

4.4.2) Ajouter des variables par défaut au rôle packages_install

Contenu du fichier :

Variable role_packages_install_packages vide par défaut, elle sera surchargée au niveau des variables de groupes de l’inventaire.

4.5) Rôle ansible de création d’utilisateurs

4.5.1) Ajouter des tâches au rôle users_create

Contenu :du fichier

ansible.builtin.user est un module ansible permettant de gérer les utilisateurs.
with_items : Permet de spécifier une liste de valeur sur laquelle l’opération va se répéter.
name: "{{ item.user }}" : item représente l’élément en cours de la liste de valeurs spécifiées dans with_items. Le nom de l’utilisateur sera donc récupéré dans la propriété name de l’objet représenté par item.

4.5.2) Ajout de variables par défaut pour le rôle users_create

Contenu du fichier :

Variable role_users_create_UsersAndGroups vide par défaut, elle sera surchargée au niveau des variables de groupes de l’inventaire.


5) Création d’un playbook ansible

Nous allons créer 2 playbooks. Un pour les configurations communes et l’autre pour la tâche de mise à jour des paquets.

5.1) Création d’un playbook pour la mise à jour des paquets

Contenu du fichier :

5.2) Création d’un fichier de playbook principal :

Contenu du fichier :


6) Création d’un inventaire ansible

6.1) Création d’un fichier d’inventaire

Contenu du fichier :


7) Variables de groupe

7.1) Création d’un répertoire contenant les variables du groupe « all »

7.2) Création du fichier principal de variable

Contenu du fichier :

role_packages_install_packages : Liste des paquets à installer par le rôle packages_install.
role_users_create_UsersAndGroups : Liste des utilisateurs et de leurs groupes d’appartenance à créer par le rôle users_create.


8) Exécution du playbook ansible

8.1) Se déplacer dans le répertoire de projet ansible

8.2) Lancer le playbook_upgrade_all_packages.yml

i : Spécifier le fichier d’inventaire.
-K : Demander le mot de passe pour l’élévation de privilège sudo.
-k : Demander le mot de passe pour la connexion ssh (si on ne souhaite pas utiliser l’authentification par clé ssh).

Résultat :

L’exécution suivante :

8.3) Lancer le playbook.yml

Résultat :

L’exécution suivante :


Voilà ! C’est terminé !

Vous pouvez maintenant automatiser des tâches grâce à Ansible.

Il ne reste plus qu’à :

  1. Créer vos propres rôles, playbooks et inventaires ansible.
  2. Exécuter vos playbooks ansible depuis l’interface web de Semaphore UI.
  3. Utiliser la section commentaires pour me faire part de vos remarques ou problèmes rencontrés.
  4. Visiter la page de la documentation officielle pour aller encore plus loin.
  5. Faire un don pour soutenir notre travail.

En savoir plus sur Jj World

Subscribe to get the latest posts sent to your email.

2 Trackbacks & Pingbacks

  1. Ansible - Installation et configuration - Jj World
  2. Hostinger - Créer son propre VPS - Français - Jj World

Laisser un commentaire