Ansible Register: créateur de variables guide complet

Auteur
Team Redac
Date de publication
Mar 25, 2024
Temps de lecture
5
m

Conçu pour simplifier les tâches de déploiement, de configuration et de gestion des infrastructures informatiques, Ansible est l’un des outils les plus populaires auprès des DevOps. Grâce à toutes ces fonctionnalités, il automatise une multitude d’actions répétitives. Parmi ces fonctionnalités, on retrouve Ansible Register. Découvrez cette commande et son utilisation. 

C’est quoi Ansible Register ?

Ansible Register peut être qualifié de créateur de variables. Il capture l’output d'une tâche (ou sortie d’exécution) et la stocke dans une variable. Ainsi sauvegardée, la variable pourra être utilisée ultérieurement dans le playbook. Et ce, aussi bien avec des prints, des boucles, des conditionnelles, etc.

Comme chaque valeur est valide tout au long de l'exécution du playbook, les tâches suivantes peuvent accéder aux informations générées par la tâche précédente.

C’est d’autant plus important que sur Ansible, toutes les sorties d’exécution de tâches ne sont pas nécessairement enregistrées sur le Terminal. Pour accéder à ces outputs, vous devez impérativement les stocker dans la variable Ansible Registre. 

Ces variables sont particulièrement utiles, puisqu’elles ajoutent de la flexibilité et de la réutilisabilité aux playbooks Ansible. Vous pouvez définir des valeurs dynamiques pouvant être adaptées à différents environnements ou configurations. 

Comment utiliser le Ansible Register ? 

Avant d’aller plus loin dans l’utilisation de la fonctionnalité Ansible Register, il convient de rappeler quelques bases : 

  • Le module Debug est utilisé en complément de Register puisqu’il permet d’imprimer la sortie sur le terminal. 
  • Les attributs de registre peuvent se combiner avec l'instruction conditionnelle (when), notamment pour créer des tâches basées sur la décision. 

Enregistrer l’output 

Sur Ansible, Register vous permet de créer des variables à partir de la sortie d'une tâche. 

Dans un premier temps, il faudra définir le playbook en configurant ses différents paramètres. Par exemple : 

- name : Test playbook - ansible register

  hosts : ubuntu.anslab.com

  gather_facts : False

  become : True

Une fois que le playbook est défini, vous pourrez exécuter les différentes tâches. Cela peut prendre cette forme : 

tasks:

    - name: First Task - Using shell module to check if virtualenv is present or not

      ansible.builtin.shell:

        cmd: which virtualenv 

      register: virtualenv_output

      ignore_errors: True

    - name: Second Task - Print the full output

      ansible.builtin.debug:

        var: virtualenv_output

Ici, nous attirons votre attention sur certaines commandes : 

  • "which virtualenv" : cela permet d’exécuter la tâche
  • virtualenv_output" : c’est dans cette variable que la sortie de tâche est capturée. Il est possible de la renommer. 
  • ansible.builtin.debug : c’est le module de débogage d’Ansible qui permet d’imprimer la valeur de registre. 

Bon à savoir : pour faire fonctionner Ansible Registre, il est possible d’utiliser le module ap ou le module shell.

Avant de soumettre le playbook, il est primordial de vérifier qu'il n'y ait pas d'erreur de syntaxe. Vous pouvez alors taper la commande suivante : 

ansible-playbook --syntax-check

Accéder aux attributs individuels

Cette étape vous permet d’imprimer uniquement le code de retour, et non pas l'intégralité de la sortie de la variable register sur Ansible. 

Vous pouvez le faire, soit via la dot notation : 

  - name: Just checking the exit code 

     ansible.builtin.debug:

       msg: "{{ virtualenv_output.rc }}"

Soit via le dictionnaire Python : 

- name: Just checking the exit code - Python dict way

     ansible.builtin.debug:

       msg: "{{ virtualenv_output['rc'] }}"

Contrôler l’exécution du Playbook

Pour s’assurer de la bonne exécution du Playbook, il est primordial de contrôler 

C’est possible grâce à l'instruction conditionnelle (when).

Voici comment l’utiliser : 

 - name: Install the package based on the return code

     ansible.builtin.apt:

       pkg: python3-virtualenv

       state: present

     when: virtualenv_output.rc != 0

     register: virtualenv_install_output

Si le code de retour est 1, la tâche est considérée comme ayant échoué. 

Écrire  la sortie du registre dans un fichier

Bien souvent, c’est le module de débogage qui est utilisé pour imprimer la sortie sur stdout(Terminal). Mais vous pouvez aussi écrire la sortie dans un fichier virtualenv_output à l’aide d’autres modules. Par exemple,  le module copy : 

  - name: Reroute the output to a file

     ansible.builtin.copy:

       content: "{{virtualenv_install_output}}"

       dest: "/home/vagrant/virtualenv_output"

Itérer et enregistrer

Dernière étape dans l’utilisation d’Ansible Register ; l’itération grâce à la boucle. Le résultat de chaque itération sera ajouté à la variable de registre removed_output.

Voici les commandes : 

- name: Using loops

     ansible.builtin.shell:

       cmd: rm -f "{{item}}"

     register: removed_output

     loop:

       - test_file.txt

       - abc.txt

- name: Print the removed output

     ansible.builtin.debug:

       msg:

         - Return code for {{removed_output.results.0.item}} is {{removed_output.results.0.rc}}

         - Return code for {{removed_output.results.1.item}} is {{removed_output.results.1.rc}}

Formez-vous pour utiliser Ansible Register

Si Ansible Register est particulièrement utile pour réutiliser certaines informations issues de tâches précédentes, c’est loin d’être la seule commande d’Ansible. Il en existe d’autres. Pour les maîtriser et déployer efficacement vos solutions digitales, vous devez d’abord bien connaître Ansible et ses fonctionnalités. C’est justement l’objectif de la DevUniversity. À travers un programme complet, vous apprendrez à utiliser tous les outils nécessaires au développement logiciel. Rejoignez-nous !

Omnes education logo

OMNES Education est une institution privée d'enseignement supérieur et de recherche interdisciplinaire, implantée à Beaune, Bordeaux, Chambéry, Lyon, Rennes et Paris. Avec ses campus à Abidjan, Barcelone, Genève, Londres, Monaco, Munich, Montreux et San Francisco, OMNES Education occupe une place unique dans le paysage éducatif français.

15
[Écoles]
200 000
[Alumni]
3 000
[Experts]
40 000
[Étudiants]
20
[Campus en France et à l’étranger]
Management
Ingénieurs
Communication
Sciences politiques et Relations internationales
Création et design