Wie führe ich mit Ansible mehrere Playbooks nacheinander aus?

16

Ich arbeite an mehreren Ansible-Playbooks, um eine neue Serverinstanz hochzufahren. Es gibt ungefähr 15 verschiedene Playbooks, die ich in einer bestimmten Reihenfolge ausführen muss, um einen Server erfolgreich hochzufahren.

Mein erster Gedanke war, ein Shell-Skript zu schreiben, das ausgeführt ansible-playbook playbook_name.ymlund einen Eintrag für jedes Playbook dupliziert, das ich ausführen muss.

Gibt es eine intelligentere / bessere Möglichkeit, dies mithilfe eines Master-Playbooks zu tun, und wenn ja, wie würde es aussehen (Beispiele werden geschätzt)?

Ich könnte ein monolithisches Spielbuch schreiben, das alles kann, aber es gibt einige Spiele, die zuerst als Root und später als Sudo-Benutzer ausgeführt werden.

nulltek
quelle
2
Verwenden Sie include in Ihrem Haupt-Playbook. docs.ansible.com/ansible/playbooks_roles.html
c4f4t0r
1
Um den Fall zu behandeln, dass Sie als root-Benutzer und dann als sudo-Benutzer ausgeführt werden, können Sie die Blockfunktion verwenden. Platzieren Sie den become:Teil am Ende jedes Blocks. Möglicherweise müssen Sie ein neues Spiel erstellen , um den Verbindungsbenutzer von root zu sudo zu wechseln.
RichVel

Antworten:

14

Erstellen Sie viele Unter-Playbooks und aggregieren Sie sie über Include-Anweisungen.

- include: playbook-one.yml
- include: playbook-two.yml

Wenn Ihre Playbooks ordnungsgemäß ausgeführt werden müssen und alle obligatorisch sind, erstellen Sie ein Haupt-Playbook und fügen Sie Dateien mit Aufgaben hinzu. Ein Playbook sollte immer ein geschlossener Prozess sein.

flxPeters
quelle
2
Könnten Sie den letzten Teil Ihrer Antwort erläutern? Was meinst du mit "Ein Playbook sollte immer ein geschlossener Prozess sein." ?
Mike Vella
1
Gibt es eine Möglichkeit, alle Playbooks mit regulären Ausdrücken anzugeben? Zum Beispiel:- include : books/*.yml
Blueskin
8
Sieht aus wie includeveraltet ist. docs.ansible.com/ansible/latest/playbooks_reuse.html Ich denke, das import_playbook: fooist der richtige Weg, aber ich bin nicht besonders erfahren.
Andrew
11

Für neuere Versionen von Ansilbe können Sie viele untergeordnete Wiedergabebücher erstellen und diese mithilfe von import_playbook-Anweisungen zusammenfassen:

---
- import_playbook: A-systemd-networkd.yml
- import_playbook: B-fail2ban-ssh.yml
- import_playbook: C-enable-watchdog.yml
Peter Senna
quelle