Jak rozumiem, każdy podręcznik zawiera jeden wpis hosta. Chcę wiedzieć, że jeśli utworzę kontener playbook zawierający inne playbooki, czy mogę sparametryzować hosty dla każdego z nich. Coś w stylu
---
- include playbook_1.yml
hosts: tag_postgres
- include: playbook_2.yml
hosts: tag_rabbitmq
Jestem w stanie umieścić wszystkie różne podręczniki w jednym skrypcie i wywołaniu, ale w ten sposób nie jestem w stanie ponownie użyć jakiegoś zestawu set_fact z jednego podręcznika do drugiego i stąd jest dużo powielania zadań.
Innym następstwem tego pytania jest to, czy mogę uruchomić ec2 na amazonie, który miałby
hosts: localhost
oraz konfiguracja uruchomionych ec2, które w zasadzie konfigurowałyby zasoby reklamowe -i ec2.py
i miały hosty określone jako
hosts: tag_<some_tag>
dzieje się przez ten sam podręcznik lub zestaw dołączonych podręczników (różne role)?
hosts:
sekcję w swoim yaml i, w gruncie rzeczy, mieć kilka podręczników korzystających z różnych grup gospodarzy w twoim ekwipunku?Odpowiedzi:
W rzeczywistości możesz mieć więcej niż jeden host: sekcja na podręcznik. Wygląda na to, że gospodarze: rozpoczynają nową grę. Zobacz na przykład http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-multiple-linux-servers/ .
Coś takiego działa dla mnie (ansible 2.2):
Więc umieść hosty: na górze każdego dołączonego pliku .yml, a nie po włączeniu :.
źródło
http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
Fakty pochodzą od zdalnych hostów. Jest to powód, dla którego normalnie możesz udostępniać fakty między różnymi hostami, gdy plik * .yml zawiera kilka podręczników .
Teraz możesz uzyskać dostęp do faktów z innych hostów, jeśli zrobisz coś takiego w innej części poradnika:
ale w tym przypadku musisz pamiętać, że musisz poznać fakty przed użyciem tego. Następnie możesz skonfigurować pierwszą część swojego podręcznika, która będzie zawierała wszystkie fakty dla wszystkich gospodarzy lub wykorzysta do tego buforowanie faktów (patrz: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching )
Teraz, jeśli chcesz udostępnić opcje w swoich podręcznikach, może być lepiej przemyśleć informacje, aby wstawić zmienne, a dzięki temu możesz „udostępnić” swoje zmienne za pomocą tej samej
include
instrukcji, spójrz na to:http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles
źródło