Je conçois une sorte de bibliothèque de jeu avec des tâches individuelles
donc, dans le repo des rôles habituels, j'ai quelque chose comme:
roles
├── common
│ └── tasks
│ ├── A.yml
│ ├── B.yml
│ ├── C.yml
│ ├── D.yml
│ ├── login.yml
│ ├── logout.yml
│ └── save.yml
├── custom_stuff_workflow
│ └── tasks
│ └── main.yml
└── other_stuff_workflow
└── tasks
└── main.yml
mon main.yml dans custom_stuff_workflow contient alors quelque chose comme:
---
- include: login.yml
- include: A.yml
- include: C.yml
- include: save.yml
- include: logout.yml
et celui-ci dans l'autre flux de travail:
---
- include: login.yml
- include: B.yml
- include: A.yml
- include: D.yml
- include: save.yml
- include: logout.yml
Je ne peux pas trouver un moyen de le faire de manière naturelle: une des méthodes qui fonctionnait était de regrouper toutes les tâches dans un seul rôle et de baliser les tâches pertinentes tout en incluant un custom_stuff_workflow.
Le problème que j’ai avec cela est que les balises ne peuvent pas être placées dans le playbook appelant: c’est seulement pour être placées en ligne de commande car je distribue ce repo ansible avec de nombreuses personnes de la société, je ne peux pas compter sur des invocations en ligne de commande ( ce serait bien d'avoir un #!
en-tête en yml à traiter par ansible-playbook
commande)
Je pourrais aussi copier les tâches pertinentes (à l’intérieur de l’arborescence ci-dessus) dans chaque flux de travail, mais je ne veux pas les répéter
Quelqu'un peut-il voir une solution pour réaliser ce que je voudrais sans répéter les tâches sur différents rôles?
Je suppose que la pierre angulaire de mon problème est que je définis les tâches comme individuelles et que cela ne semble pas naturel dans ansible ...
Merci beaucoup
PS: notez que les tâches dans le flux de travail doivent être effectuées dans un ordre spécifique et que les seules étapes naturelles pour résumer seraient la connexion et la sauvegarde/la déconnexion.
PPS: J'ai vu cette question Comment appeler un rôle dans un autre rôle dans Ansible? mais cela ne résout pas mon problème car il appelle un rôle complet et non un sous-ensemble des tâches d'un rôle
Si juste quelqu'un casse dans cela, la version 2.2 de Ansible a maintenant include_role
_ Vous pouvez maintenant faire quelque chose comme ça.
---
- name: do something
include_role:
name: common
tasks_from: login
Consultez la documentation ici .
Oui, Ansible n'aime pas vraiment les tâches en tant que composants individuels. Je pense que cela veut que vous utilisiez des rôles, mais je comprends pourquoi vous ne voudriez pas utiliser des rôles pour des tâches simples et réutilisables.
Je vois actuellement deux solutions possibles:
Ensuite, vous pouvez faire quelque chose comme ceci dans par exemple custom_stuff_workflow
dependencies:
- { role: login }
Voir: https://docs.ansible.com/playbooks_roles.html#role-dependencies
- include: ../../common/tasks/login.yml
Cela a plutôt bien fonctionné dans un petit testbook que je viens de faire. Gardez à l'esprit, vous pouvez également utiliser des paramètres, etc.
Voir: http://docs.ansible.com/ansible/latest/playbooks_reuse.html
J'espère que j'ai bien compris cette question et que cela aide.