Ansible - 6 Utiliser les variables dans un playbook Ansible

Un playbook Ansible peut s'appliquer à de nombreux serveurs. Pourtant, chaque serveur a parfois ses propres valeurs, comme un nom d'utilisateur ou une adresse IP. Les variables permettent de stocker ces valeurs à un seul endroit et de les réutiliser. Cette leçon montre comment les définir, les appeler et les déplacer dans un fichier dédié.

Définir une variable dans le playbook

Une variable garde une valeur qui peut changer d'un serveur à l'autre. La vidéo prend l'exemple d'un playbook qui ajoute une entrée DNS, où l'adresse du serveur DNS peut varier.

Pour ajouter une variable, on utilise la directive vars, suivie du nom de la variable et de sa valeur, au format clé valeur. L'exemple ci-dessous utilise une variable nommée dns_server, avec une adresse IP fictive.

vars:
  dns_server: 192.0.2.53

Appeler la variable avec les doubles accolades

Pour utiliser la variable, on remplace la valeur codée en dur par son nom, placé entre doubles accolades. Lors de l'exécution, Ansible remplace ce nom par la valeur de la variable.

Si un autre utilisateur veut réutiliser ce playbook, il doit modifier chaque valeur codée en dur. En appelant les variables avec les doubles accolades, il suffit de modifier les valeurs à un seul endroit.

  • Repérez la valeur codée en dur dans le playbook.
  • Remplacez-la par le nom de la variable entre doubles accolades, par exemple {{ dns_server }}.

Déplacer les variables dans un fichier d'hôte

La vidéo montre un playbook de configuration de pare-feu, qui contient plusieurs valeurs codées en dur. Un meilleur moyen consiste à déplacer ces valeurs dans un fichier de variables d'hôte, nommé web.yml.

Toutes les valeurs de ce fichier sont disponibles pour le playbook lorsqu'il s'exécute pour cet hôte. Le playbook reste ainsi plus lisible et plus simple à réutiliser. La vidéo désigne le format des doubles accolades sous le nom de Jinja2, moteur de modèles.

En résumé

Les variables évitent de répéter des valeurs propres à chaque serveur. On les définit avec la directive vars dans le playbook, ou dans un fichier de variables d'hôte. On les appelle entre doubles accolades. Un playbook ainsi organisé devient plus simple à réutiliser.

Points clés

  • Une variable stocke une valeur qui peut changer selon le serveur.
  • La directive vars définit les variables directement dans le playbook.
  • Une variable s'appelle entre doubles accolades, par exemple avec son nom.
  • Déplacer les valeurs dans un fichier d'hôte facilite la réutilisation du playbook.
  • Les doubles accolades relèvent de la syntaxe Jinja2.

Questions fréquentes

Quand utiliser une variable plutôt qu'une valeur codée en dur ?

Utilisez une variable lorsque la valeur change d'un serveur à l'autre, comme un nom d'utilisateur. Un même playbook peut alors servir à plusieurs serveurs.

Comment appeler une variable dans un playbook ?

Écrivez son nom entre doubles accolades, par exemple {{ dns_server }}. Ansible remplace ce nom par la valeur de la variable à l'exécution.

Que contient le fichier web.yml ?

Il contient les variables propres à l'hôte web. Ses valeurs sont disponibles pour le playbook lorsqu'il s'exécute pour cet hôte.