GNU/Linux >> Tutoriels Linux >  >> Linux

Comment utiliser les balises dans Ansible Playbook (exemples)

Parfois, vous souhaiterez peut-être exécuter des tâches spécifiques au lieu d'exécuter un fichier playbook entier. Cela permet de réduire le temps d'exécution total du playbook, en particulier lorsqu'il s'agit d'un fichier playbook volumineux.

Alors, que sont les balises ?

Les balises dans les playbooks sont des éléments de métadonnées qui sont attachés aux tâches dans un fichier playbook. Ils sont référencés lors de l'exécution de playbooks et vous permettent de cibler sélectivement certaines tâches au moment de l'exécution. Fondamentalement, l'instruction Ansible d'exécuter (ou de ne pas exécuter) des tâches spécifiques dans le fichier playbook.

Habituellement, les tâches ignorées ont été exécutées et il n'est donc pas nécessaire de les exécuter à nouveau. De cette façon, les balises évitent les répétitions et optimisent le temps d'exécution du playbook. Ils sont pratiques lorsque vous souhaitez exécuter certaines tâches à la demande.

Dans ce guide, nous allons nous plonger dans les balises Ansible et montrer comment vous pouvez attacher des balises aux tâches pour déterminer l'exécution du playbook.

Exécuter une tâche spécifique dans un playbook

Prenons un exemple de fichier playbook qui exécute trois tâches comme indiqué. Les balises sont spécifiées à l'aide de l'étiquette de balises à la fin de chaque tâche.

---
- name: Ansible Tags example
  hosts: localhost
  gather_facts: False
  tasks:
    - name: Hello World tag example
      debug:
        msg: "Hello World!"
      tags:
        - hello

    - name: Welcome to Ansible Tags tag example
      debug:
        msg: "How are you?"
      tags:
        - welcome

    - name: Enjoy tag example
      debug:
        msg: "Enjoy!"
      tags:
        - enjoy

Dans ce playbook, nous avons trois balises :bonjour, bienvenue et profitez-en.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --list-tags

Comme mentionné précédemment, vous pouvez utiliser des balises pour contrôler l'exécution des playbooks Ansible. Pour spécifier la tâche à exécuter, utilisez l'indicateur -t ou –tags.

Dans la commande ci-dessous, nous demandons à Ansible d'exécuter uniquement la première tâche qui a été marquée comme bonjour.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --tags hello

Ignorer des balises spécifiques dans un Playbook

Vous pouvez également demander à Ansible d'ignorer des balises spécifiques à l'aide de l'indicateur –skip-tags. Ce faisant, Ansible exécutera le reste des tâches dans le fichier Playbook à l'exception de la tâche fournie.

Dans cet exemple, Ansible ignore la dernière tâche marquée enjoy et exécute le reste des tâches définies dans le playbook.

$ sudo ansible-playbook /etc/ansible/ansible-01-tags.yml --skip-tags enjoy

Assurez-vous qu'une tâche s'exécute toujours (ou jamais)

Même lorsque vous utilisez des balises pour déterminer les tâches à exécuter dans un fichier playbook, vous constatez parfois qu'il existe des tâches que vous devez exécuter. Prenons, par exemple, un playbook qui installe Apache sur le serveur Web distant.

Le playbook a 3 tâches. Il met d'abord à jour les listes de packages sur l'hôte distant, installe Apache et le redémarre. Cependant, avant d'installer Apache, il est nécessaire de mettre à jour les listes de packages ou d'actualiser les référentiels.

Étant donné que l'actualisation des référentiels est une condition préalable, nous baliserons cette tâche avec la balise always.

---
- name: install Apache webserver
  hosts: webserver
  tasks:
    - name: Update and upgrade apt packages
      apt:
        update_cache: yes
      tags:
        - always

    - name: install Apache on Ubuntu
      apt:
        name: apache2
        state: latest
      tags:
        - install_apache

    - name: Restart Apache Webserver
      service:
        name: apache2
        state: restarted
      tags:
        - restart_apache

Sans aucune balise, le playbook s'exécute comme prévu.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

Si nous spécifions d'exécuter une tâche spécifique autre que celle qui est obligatoire (qui dans ce cas est la première tâche), Ansible exécutera également la tâche qui porte la balise "toujours".

Dans cet exemple, nous avons demandé à Ansible de redémarrer Apache qui porte la balise "restart_apache". Cependant, la tâche "mettre à jour le référentiel apt" s'exécute toujours car elle a la balise "toujours".

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Dans le même ordre d'idées, vous pouvez dire à Ansible de ne jamais exécuter une tâche, et pour cela, nous utilisons la balise "jamais". C'est l'exact opposé de la balise "toujours".

Revenons à notre livre de jeu. Supposons que vous ne souhaitiez pas redémarrer Apache après l'installation. Pour ce faire, passez simplement la balise Never comme indiqué.

- name: Restart Apache Webserver
  service:
    name: apache2
    state: restarted
  tags:
    - restart_apache
    - never

Cela peut également être balisé comme suit en utilisant les doubles crochets :

  tags: [ restart_apache, never ]

Lorsque le playbook est exécuté sans aucune balise, la tâche sera omise.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml

À partir de la sortie, vous pouvez voir que la tâche de redémarrage d'Apache a été ignorée.

REMARQUE :

Une tâche marquée "jamais" s'exécutera quand même lorsqu'elle sera explicitement appelée dans la commande ansible-playbook. Par exemple, la tâche qui redémarre Apache sera toujours exécutée puisqu'elle a été explicitement définie dans la commande.

$ sudo ansible-playbook /etc/ansible/ansible-02-tags.yml --tags restart_apache

Conclusion

Les balises Ansible sont pratiques et offrent la flexibilité nécessaire à l'exécution de playbooks Ansible. Vous pouvez exécuter ou ignorer l'exécution de tâches spécifiques dans un playbook. Cela offre un meilleur contrôle de vos playbooks pendant l'exécution du playbook.

Lire aussi  :Comment utiliser Ansible Vault pour sécuriser les données sensibles


Linux
  1. Comment j'utilise Ansible et anacron pour l'automatisation

  2. Comment utiliser la commande IP sous Linux avec des exemples

  3. Comment utiliser la commande ethtool avec des exemples

  4. Comment créer un Playbook Ansible

  5. Comment passer des variables supplémentaires à un playbook Ansible

Comment utiliser la commande Grep sous Linux + exemples utiles de Grep

Comment utiliser la commande Dig sous Linux (10 exemples)

Comment utiliser la commande Linux rm avec des exemples

Comment définir et utiliser des gestionnaires dans des playbooks Ansible

Comment utiliser Ansible pour configurer Vim

Comment utiliser Ansible pour envoyer un e-mail avec Gmail