Según tengo entendido, cada libro de jugadas tiene una entrada de hosts. Quiero saber que si creo un libro de jugadas contenedor que incluye otros libros de jugadas, ¿puedo parametrizar los hosts para cada libro de jugadas incluido? Entonces algo como
---
- include playbook_1.yml
hosts: tag_postgres
- include: playbook_2.yml
hosts: tag_rabbitmq
Puedo poner todos los libros de jugadas diferentes en una secuencia de comandos y llamar, pero de esta manera no puedo reutilizar algunos set_fact de un libro de jugadas en otro y, por lo tanto, hay mucha duplicación de tareas.
Otro corolario de la pregunta es, ¿puedo iniciar ec2s en Amazon que tendría
hosts: localhost
y la configuración de los ec2 iniciados, que básicamente configurarían el inventario -i ec2.py
y tienen hosts especificados como
hosts: tag_<some_tag>
pasando por el mismo libro de jugadas o un conjunto de libros de jugadas incluidos (diferentes roles)?
hosts:
sección en su yaml y, en esencia, tener varios libros de jugadas utilizando diferentes grupos de hosts en su inventario?Respuestas:
En realidad, puede tener más de un host: sección por libro de jugadas. Parece que un host: comienza una nueva jugada. Ver http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-multiple-linux-servers/ , por ejemplo.
Algo como esto funciona para mí (ansible 2.2):
Por lo tanto, coloque hosts: en la parte superior de cada .yml incluido, no después de incluir :.
fuente
http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
Los hechos se derivan de sus hosts remotos. Esta es la razón por la que normalmente puede compartir datos entre sus diferentes hosts cuando su archivo * .yml tiene varios libros de jugadas .
Ahora, puede acceder a datos de otros hosts si hace algo como esto en otra parte de su libro de jugadas:
pero en este caso, debe recordar que necesita obtener los hechos antes de usar esto. Luego, puede configurar una primera parte en su libro de jugadas que obtenga todos los hechos para todos los hosts o use el almacenamiento en caché de hechos para esto (consulte: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching )
Ahora, si le gusta compartir opciones en sus libros de jugadas, tal vez sea mejor repensar la información para incluir variables y, con esto, puede "compartir" sus variables con la misma
include
instrucción, mire esto:http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles
fuente