Pelo que entendi, cada playbook recebe uma entrada de hosts. Quero saber que, se eu criar um manual de contêineres que inclui outros manuais, posso parametrizar os hosts de cada manual de instruções. Então, algo como
---
- include playbook_1.yml
hosts: tag_postgres
- include: playbook_2.yml
hosts: tag_rabbitmq
Consigo colocar todos os playbooks diferentes em um script e chamada, mas dessa forma não consigo reutilizar alguns set_fact de um playbook para outro e, portanto, há muita duplicação de tarefas.
Outro corolário da questão é: posso lançar ec2s na amazon que teria
hosts: localhost
e configuração dos ec2s lançados, que basicamente configurariam o inventário -i ec2.py
e teriam hosts especificados como
hosts: tag_<some_tag>
acontecendo através do mesmo manual ou de um conjunto de manuais incluídos (papéis diferentes)?
hosts:
seção no yaml e, em essência, possui vários manuais usando diferentes grupos de hosts em seu inventário?Respostas:
Na verdade, você pode ter mais de um host: seção por manual. Parece que um anfitrião: inicia uma nova peça. Consulte http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-multiple-linux-servers/ , por exemplo.
Algo assim funciona para mim (versão 2.2):
Então, coloque hosts: no topo de cada .yml incluído, não depois do include :.
fonte
http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
Os fatos são derivados de seus hosts remotos. Portanto, esse é o motivo pelo qual normalmente você pode compartilhar fatos entre seus diferentes hosts quando o seu arquivo * .yml tiver vários manuais .
Agora, você pode acessar fatos de outros hosts se fizer algo assim em outra parte do seu manual:
mas, nesse caso, você precisa se lembrar de que precisa obter os fatos antes de usá-lo. Em seguida, você pode configurar uma primeira parte do seu manual que obtenha todos os fatos de todos os hosts ou use o cache de fatos para isso (consulte: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching )
Agora, se você gosta de compartilhar opções em seus playbooks, talvez seja melhor repensar as informações para inserir variáveis e, com isso, você pode "compartilhar" suas variáveis com a mesma
include
instrução, veja o seguinte:http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles
fonte