Si je comprends bien, chaque playbook prend une entrée d'hôtes. Je veux savoir que si je crée un playbook conteneur qui inclut d'autres playbooks, puis-je paramétrer les hôtes pour chaque playbook inclus. Donc quelque chose comme
---
- include playbook_1.yml
hosts: tag_postgres
- include: playbook_2.yml
hosts: tag_rabbitmq
Je suis capable de mettre tous les playbooks différents dans un script et un appel, mais de cette façon, je ne suis pas en mesure de réutiliser certains set_fact d'un playbook dans un autre et il y a donc beaucoup de duplication de tâches.
Un autre corollaire de la question est, puis-je lancer ec2s sur amazon qui aurait
hosts: localhost
et la configuration des ec2 lancés, qui configureraient essentiellement l'inventaire à partir duquel les -i ec2.py
hôtes seraient spécifiés comme
hosts: tag_<some_tag>
se passe-t-il par le même livre de jeu ou un ensemble de livres de jeu inclus (différents rôles)?
hosts:
section dans votre yaml et essentiellement avoir plusieurs playbooks utilisant différents groupes d'hôtes dans votre inventaire?Réponses:
En fait, vous pouvez avoir plus d'un hôte: section par playbook. Il semble qu'un hôte: démarre une nouvelle pièce. Voir http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-multiple-linux-servers/ , par exemple.
Quelque chose comme ça fonctionne pour moi (ansible 2.2):
Donc, mettez les hôtes: en haut de chaque .yml inclus, pas après l'include:.
la source
http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
Les faits proviennent de vos hôtes distants. C'est donc la raison pour laquelle normalement vous pouvez partager des faits entre vos différents hôtes lorsque votre fichier * .yml a plusieurs playbooks .
Maintenant, vous pouvez accéder aux faits d'autres hôtes si vous faites quelque chose comme ça dans une autre partie de votre livre de jeu:
mais dans ce cas, vous devez vous rappeler que vous devez obtenir les faits avant de l' utiliser. Ensuite, vous pouvez configurer une première partie de votre playbook qui obtient tous les faits pour tous les hôtes ou utiliser la mise en cache des faits pour cela (voir: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching )
Maintenant, si vous aimez partager des options dans vos playbooks, il peut être préférable de repenser les informations à mettre dans les variables et, avec cela, vous pouvez "partager" vos variables avec la même
include
instruction, regardez ceci:http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles
la source