Nordika arrive à un playbook de plus en plus complet : installation, configuration, utilisateurs, sécurité… Plusieurs dizaines de tâches, potentiellement plusieurs minutes d’exécution. Mais si vous voulez juste retester la partie « configuration Apache » sans repasser par toute l’installation système, tout rejouer à chaque fois devient vite pénible. C’est exactement le problème que les tags résolvent.
Le principe : étiqueter des tâches
Un tag est une étiquette qu’on colle sur une ou plusieurs tâches, pour pouvoir les cibler précisément à l’exécution :
---
- name: Déployer l'infrastructure Nordika
hosts: webservers
become: yes
tasks:
- name: Installer Apache
ansible.builtin.apt:
name: apache2
state: present
tags: install
- name: Déployer le VirtualHost
ansible.builtin.template:
src: nordika.conf.j2
dest: /etc/apache2/sites-available/nordika.conf
tags: config
- name: Créer les comptes utilisateurs
ansible.builtin.user:
name: "{{ item }}"
state: present
loop:
- alice
- bob
tags: usersExécuter uniquement certains tags
ansible-playbook playbook_nordika.yaml -i inventaire.yaml --tags configSeule la tâche taguée config s’exécute — l’installation et la création des comptes sont complètement ignorées, sans même être évaluées.
Combiner plusieurs tags
ansible-playbook playbook_nordika.yaml -i inventaire.yaml --tags "config,users"Exécute les tâches taguées config ou users.
Exclure un tag avec --skip-tags
À l’inverse, pour tout exécuter sauf une partie précise :
ansible-playbook playbook_nordika.yaml -i inventaire.yaml --skip-tags usersUtile, par exemple, pour rejouer tout le playbook d’infrastructure sans retoucher à la gestion des comptes, qui suit peut-être un cycle de validation séparé chez Nordika.
Une tâche peut avoir plusieurs tags
- name: Déployer le VirtualHost
ansible.builtin.template:
src: nordika.conf.j2
dest: /etc/apache2/sites-available/nordika.conf
tags:
- config
- apacheCette tâche s’exécute aussi bien avec --tags config qu’avec --tags apache.
Le tag spécial always
Un tag particulier existe : always. Une tâche taguée always s’exécute systématiquement, même si vous filtrez sur un autre tag qui ne la concerne pas — typiquement utile pour une vérification de base qui doit toujours avoir lieu, quel que soit le sous-ensemble demandé :
- name: Vérifier la connectivité avant toute chose
ansible.builtin.ping:
tags: alwaysLister les tags disponibles sans exécuter
Pratique pour explorer un playbook qu’on découvre, ou qu’on a écrit soi-même il y a longtemps et un peu oublié :
ansible-playbook playbook_nordika.yaml -i inventaire.yaml --list-tagsTagger un rôle entier
Souvenez-vous des rôles vus en section 6 : on peut tagger un rôle complet directement dans son appel, plutôt que tâche par tâche à l’intérieur du rôle :
---
- name: Déployer l'infrastructure Nordika
hosts: webservers
become: yes
roles:
- role: apache
tags: apacheCe qu’il faut retenir
--tagscible uniquement les tâches concernées ;--skip-tagsfait l’inverse.- Une tâche peut porter plusieurs tags à la fois.
- Le tag
alwayss’exécute quoi qu’il arrive, même en filtrant sur un autre tag. --list-tagspermet d’explorer les tags disponibles sans rien exécuter.
Dans la prochaine leçon, on regarde comment accélérer l’exécution elle-même sur un grand nombre de machines : les stratégies et le parallélisme.