Présentation
Ansible est un outil d'infrastructure en tant que code qui vous permet de gérer et de surveiller un certain nombre de serveurs distants à l'aide d'un seul nœud de contrôle.
Avec Ansible, vous pouvez gérer des serveurs distants à l'aide de playbooks. Ces playbooks transmettent des instructions aux serveurs distants et leur permettent d'exécuter des tâches prédéfinies.
Dans ce tutoriel, nous verrons ce que sont les playbooks Ansible, comment ils fonctionnent et comment vous pouvez les créer et les exécuter.
Prérequis
- Un système Linux (nous utilisons Ubuntu 20.04)
- Accès à la ligne de commande/fenêtre du terminal
- Ansible installé et configuré
Qu'est-ce qu'un manuel Ansible ?
Un playbook Ansible est une liste d'instructions pour les tâches exécutées automatiquement par des ordinateurs distants dans un réseau Ansible.
Un playbook Ansible se compose de jeux. Les lectures sont un ensemble de tâches orchestrées qui sont terminées une fois qu'un playbook est exécuté. Vous pouvez ajouter plusieurs jeux à un seul playbook.
Les jeux utilisent des modules pour définir les modifications à apporter pour accomplir une tâche. Chaque module fournit un cadre pour une certaine catégorie d'emplois et peut être personnalisé à l'aide d'arguments et variables .
Les playbooks Ansible sont enregistrés sous forme de fichiers .yaml, ce qui les rend flexibles et faciles à utiliser.
Les playbooks sont principalement utilisés pour :
- Déclarer des configurations.
- Automatisation de certaines tâches répétables qui prendraient trop de temps à effectuer manuellement.
- Lancer des tâches de manière synchrone ou asynchrone.
Variables de playbook Ansible
Les playbooks Ansible utilisent des variables pour offrir flexibilité et facilité d'utilisation. Les variables peuvent être intégrées (telles que les informations système) ou définies par l'utilisateur .
Dans un playbook Ansible, les variables sont définies à l'aide de vars
mot-clé :
Dans l'exemple ci-dessus, nous définissons le greeting
variable avec la valeur assignée de Hello World!
.
Pour accéder à la valeur, mettez le nom de la variable greeting
entre accolades doubles :
Une fois exécuté, le playbook imprime le message Hello World!
Outre les variables à valeur unique, il existe plusieurs autres types de variables Ansible. Utilisation de variables avec des tableaux , affectez plusieurs valeurs à une variable avec la syntaxe suivante :
vars:
array_name:
- value1
- value2
…
- valueN
Accédez à une valeur spécifique en utilisant {{ array_name[value number] }}
, par exemple :
Variables avec dictionnaires combiner plusieurs tableaux de valeurs en une seule variable :
vars:
array_name:
dictionary_name1:
item1: value1
item2: value2
dictionary_name2:
item1: value1
item2: value2
Enfin, les variables spéciales sont prédéfinis par Ansible et ne peuvent pas être définis par les utilisateurs. Utilisez la commande suivante pour obtenir une liste de variables spéciales :
ansible -m setup hostname
Comment écrire un playbook Ansible ?
Créez un playbook Ansible en utilisant n'importe quel éditeur de texte disponible sur votre système. Par exemple, créez un playbook avec Nano :
sudo nano /path/to/playbook/directory/playbook_name.yaml
Les playbooks Ansible suivent les règles de base de la syntaxe YAML.
Un playbook commence par trois n-tirets (---
), suivi du nom du playbook, du nom du groupe d'hôtes distants qui exécute le playbook et de paramètres supplémentaires tels que become
(exécutez le playbook en tant qu'administrateur).
La section suivante contient toutes les variables définies par l'utilisateur. Cela commence par les vars
balise au même niveau d'indentation que la section précédente, suivie d'une liste de variables dans l'indentation suivante.
Enfin, la liste des tâches commence par les tasks
tag, avec le niveau d'indentation en fonction du type de tâche et des paramètres utilisés.
La syntaxe YAML permet d'utiliser trois points (…
) pour terminer le playbook. Bien que la plupart des playbooks se terminent ainsi, il n'est pas nécessaire que le playbook fonctionne correctement.
Syntaxe du Playbook Ansible
Quelques éléments importants de la syntaxe YAML à garder à l'esprit lors de l'écriture de playbooks Ansible :
- Lorsque vous composez des listes, utilisez un espace entre le tiret (
-
) et l'entrée de la liste. - Lorsque vous utilisez la
key: value
forme, les deux-points doivent être suivis d'un espace. - Les valeurs booléennes peuvent utiliser les deux
yes
etno
, ainsi quetrue
etfalse
. - Utilisez un espace suivi de
#
pour indiquer un commentaire.
Exemple de manuel Ansible
Pour cet exemple, nous allons créer un playbook dans le dossier d'installation d'Ansible :
sudo nano /etc/ansible/example_playbook.yaml
Ce playbook contient les éléments suivants :
---
:Signale le début du playbook.name
:Définit le nom du playbook Ansible.hosts
:Définit quels hôtes exécutent le playbook. Dans l'exemple ci-dessus, le playbook s'exécute sur tous les hôtes inclus dans le fichier d'inventaire.become
:demande à l'hôte distant d'exécuter le playbook en tant qu'administrateur. L'utilisation de cette balise nécessite que vous saisissiez le mot de passe administrateur de l'hôte distant lors de l'exécution du playbook.vars
:Définit des variables - dans notre cas, une variable nomméegreeting
avec la valeurHello World!
.tasks
:La liste des tâches que le playbook doit exécuter. Dans l'exemple ci-dessus, la première tâche crée un répertoire appelé example_playbook sur l'hôte distant. La deuxième tâche crée un nouveau fichier texte dans ce répertoire et place la valeur degreeting
variable comme contenu....
:Signale la fin du playbook.
Comment un playbook est-il exécuté ?
Les playbooks Ansible sont exécutés dans l'ordre, de haut en bas. Cela est vrai à la fois pour les jeux individuels et pour les tâches répertoriées dans ces jeux.
Dans l'exemple ci-dessus, le playbook effectue les actions suivantes, dans l'ordre :
- Définit une liste de variables.
- Crée un nouveau dossier sur l'hôte distant.
- Crée un fichier texte dans le nouveau dossier.
- Ajoute la valeur de la variable en tant que contenu du fichier.
Comment exécuter un playbook Ansible
Pour exécuter un playbook Ansible, utilisez :
ansible-playbook /path/to/playbook/directory/playbook_name.yaml
Pour les besoins de cet article, nous utiliserons example_playbook.yaml
avec le -K
argument, qui nous permet de saisir le mot de passe de l'utilisateur root pour l'hôte distant et d'exécuter le playbook en tant qu'administrateur :
ansible-playbook /etc/ansible/example_playbook.yaml -K
Comment vérifier les playbooks
Exécutez un playbook en mode vérification à l'aide de --check
drapeau pour le vérifier. Cela vous permet de voir les changements que votre playbook apporterait, sans vraiment les faire :
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check
Pour un aperçu plus détaillé des changements potentiels, utilisez la combinaison --check
et --diff
drapeaux :
ansible-playbook /path/to/playbook/directory/playbook_name.yaml --check --diff
Conseils utiles pour les manuels Ansible
Il existe plusieurs façons de faciliter la lecture et l'utilisation des playbooks Ansible :
Nommez toujours les parties et les tâches
Utilisez le name
mot-clé pour définir les noms des jeux et des tâches. L'ajout de noms courts et simples permet de savoir beaucoup plus facilement ce que chaque jeu ou tâche fait en un coup d'œil.
Utiliser les commentaires
Assurez-vous d'ajouter beaucoup de commentaires, en particulier lors de la définition des variables et des tâches.
Des commentaires détaillés aident à rendre le playbook encore plus clair et facile à comprendre. Ils aident également toute autre personne utilisant vos playbooks.
Formater le Playbook pour en faciliter l'utilisation
Bien que vous deviez suivre les règles d'indentation pour que le playbook fonctionne, vous pouvez toujours utiliser des espaces (tels que des lignes vides entre les tâches) pour faciliter la lecture d'un playbook.