Bonjour,

Alors, ça date un peu ($JOB-2) et il peut y avoir des choses qui ont évolué (il n’y avait pas d’import ou include ou les 2, et ma mémoire qui fait défaut), mais j’ai eu un projet de déploiement d’une archi importante Ansible dont le déroulement complet était trop long pour être réappliqué intégralement à chaque modification. 

J’avais une structure de code plutôt standardisée (arborescence des rôles avec séparation des tasks, vars et handlers dans des dossiers différents), et un unique playbook de base qui faisait la coordination et appelait les rôles en sequence avec les listes de paramètres dont ils avaient besoin.

La sélection de l’exécution partielle se faisait grâce aux tags. Chaque appel de rôle du playbook de base et chaque tache des rôles avait (souvent vi des blocs) un ou plusieurs tags. Quelques taches systématiques (inventaire, fabrication des groupes en fonctions de remontées d’inventaires — os, versions, subnet…) avaient le tag always. Quelques unes avec never, debug permettait de ne les lancer qu’en mode « debug »

Ça me permettait de ne lancer que ce dont j’avais besoin, de séparer un peu les tâches de build nécessaire uniquement au déploiement d’une nouvelle machine de celles de maintenance et MCO, etc…

Reste à voir dans quelle mesure, c’est utilisable avec une CI (en tout cas la partie, c’est une tâche, rôle, whatever avec ce tag qui a été modifié donc on fait tourner avec ce tag en particulier…