Soweit ich weiß, benötigt jedes Playbook einen Host-Eintrag. Ich möchte wissen, dass ich beim Erstellen eines Container-Playbooks, das andere Playbooks enthält, die Hosts für jedes Playbook-Include parametrisieren kann. Also so etwas wie
---
- include playbook_1.yml
hosts: tag_postgres
- include: playbook_2.yml
hosts: tag_rabbitmq
Ich kann alle verschiedenen Playbooks in ein Skript einfügen und aufrufen, aber auf diese Weise kann ich set_fact nicht von einem Playbook in ein anderes wiederverwenden, und daher gibt es viele Aufgabenüberschneidungen.
Eine weitere Folge der Frage ist, kann ich ec2s auf Amazon starten, was hätte
hosts: localhost
und Konfiguration der gestarteten ec2s, die im Grunde genommen das Inventar von konfigurieren -i ec2.py
und deren Hosts als angegeben sind
hosts: tag_<some_tag>
passiert durch dasselbe Spielbuch oder eine Reihe von enthaltenen Spielbüchern (verschiedene Rollen)?
hosts:
Abschnitt in Ihrem Yaml haben können und im Wesentlichen mehrere Playbooks mit unterschiedlichen Hostgruppen in Ihrem Inventar haben?Antworten:
Tatsächlich können Sie mehr als einen Host haben: Abschnitt pro Spielbuch. Es scheint, dass ein Host: ein neues Spiel startet. Siehe zum Beispiel http://www.tecmint.com/use-ansible-playbooks-to-automate-complex-tasks-on-multiple-linux-servers/ .
So etwas funktioniert bei mir (ansible 2.2):
Setzen Sie also Hosts: an die Spitze jeder enthaltenen .yml, nicht nach dem Include:.
quelle
http://docs.ansible.com/ansible/playbooks_variables.html#information-discovered-from-systems-facts
Die Fakten werden von Ihren Remote-Hosts abgeleitet. Dies ist der Grund, warum Sie normalerweise Fakten zwischen Ihren verschiedenen Hosts austauschen können, wenn Ihre * .yml- Datei mehrere Playbooks enthält .
Jetzt können Sie auf Fakten von anderen Hosts zugreifen, wenn Sie in einem anderen Teil Ihres Spielbuchs so etwas tun:
In diesem Fall müssen Sie sich jedoch daran erinnern, dass Sie die Fakten abrufen müssen, bevor Sie diese verwenden. Anschließend können Sie einen ersten Teil in Ihrem Playbook einrichten, der alle Fakten für alle Hosts abruft, oder das Fact Caching verwenden (siehe: http://docs.ansible.com/ansible/playbooks_variables.html#fact-caching ).
Wenn Sie nun Optionen in Ihren Playbooks freigeben möchten, ist es möglicherweise besser, die Informationen zum Einfügen von Variablen zu überdenken. Auf diese Weise können Sie Ihre Variablen mit derselben
include
Anweisung "freigeben". Sehen Sie sich Folgendes an:http://docs.ansible.com/ansible/playbooks_variables.html#variables-defined-from-included-files-and-roles
quelle