J'ai rejoint un projet qui a un grand nombre de playbooks et de rôles, et qui utilise beaucoup include
(souvent de manière imbriquée) afin d'inclure les playbooks/rôles dans les playbooks/rôles existants. (Que ce soit une bonne ou une mauvaise pratique devrait être considérée hors de portée de cette question, parce que ce n'est pas quelque chose que je peux immédiatement changer.) Notez aussi que include_role
n'est pas utilisé parce que ces playbooks ont été écrits bien avant que 2.2 ne soit sorti. processus de mise à jour.)Comment déboguer les inclusions et dépendances Ansible?
Normalement, lorsque runningansible-playbook
, la sortie affiche simplement chaque tâche en cours d'exécution, mais elle ne montre pas les inclusions qui tirent des tâches supplémentaires. Cela rend difficile la façon dont le flux global saute entre les playbooks. En revanche, include_vars
tâches sont inclus dans la sortie. Je suppose que c'est parce que c'est un module Ansible, alors que include
isn't really a module.
Donc, sans avoir à modifier les playbooks, est-il possible d'exécuter des playbooks qui montre ce qui suit?
- lorsque
include
directives déclenchent et - (idéalement) également les fichiers exacts qui sont inclus, car il est pas toujours évident de savoir comment les chemins relatifs sont convertis en chemins absolus
J'ai trouvé beaucoup de conseils sur les différentes façons de déboguer des playbooks, mais rien qui réalise cela. Points bonus si cela indique également quand les rôles sont inclus via meta
role dependencies! Je suis conscient qu'il existe des outils tels que ansigenome qui font l'analyse statique des playbooks, mais j'espère quelque chose qui peut produire les informations à l'exécution du playbook, pour tout playbook que je choisis d'invoquer.
Si ce n'est pas possible actuellement, serait-ce une demande de fonctionnalité raisonnable?
Est-ce que ce 'chemin de la tâche:' a été introduit depuis 1.9? Je suis actuellement obligé d'utiliser cette ancienne version 1.9, et je ne la vois pas en utilisant '-vv'. –
Répondre à ma propre question: Je le vois avec 2.2.1.0, il doit donc avoir été. Même si cette réponse ne m'aide pas vraiment puisque je suis toujours obligé d'utiliser 1.9, je vais l'accepter car il est assez bon pour quelqu'un d'autre ne pas fonctionner follement une ancienne version. Cela dit, je ne suis pas sûr que cela réponde à la partie sur les dépendances de la question. –