Ansible Playbook parallel starten?

foxit

Well-Known Member
Hallo

Ich habe mir ein kleines Ansible Playbook geschrieben, welches mir meine Lets-Encrypt Zertifikate auf die jeweiligen Jails verteilt. In der Zwischenzeit, habe ich immer mehr Dateien in diesem Playbook, welche kopiert oder geprüft werden wollen. Auch die Anzahl der Jails ist gewachsen. Hier mal ein Auszug von einem kleinen Playbook [1].

Damit das alles automatisiert laufen kann, habe ich mit ein "Master" Playbook [2] gemacht, bei dem alle anderen eingebunden werden. Damit kann ich jetzt alles mit einem Kommando starten. Mein Problem ist jetzt, dass es sehr lange dauern kann, bis alle Playbook durchgelaufen sind. Bei 3-4 Jails, ist das kein Problem aber bei 20-30 (auch per ssh auf andere Hosts) dauert das schon seine Zeit...

Daher die Frage: Gibt es eine Möglichkeit, die importierten Playbook parallel zu starten oder bin ich da auf dem falschen Weg?

Danke

Code:
  1 ---
  2 - hosts: mail
  3
  4   tasks:
  5
  6     - name: check folder
  7       file:
  8         path: "/usr/local/etc/letsencrypt/XXX"
  9         state: directory
10
11     - name: copy files
12       copy:
13         src: "/usr/local/etc/getssl/XXX/ssl/{{ item.src }}"
14         dest: "/usr/local/etc/letsencrypt/XXX/{{ item.dest }}"
15         mode: "{{ item.mode }}"
16       with_items:
17         - { src: "letsencrypt-XXX.bundle", dest: "letsencrypt-XXX.bundle", mode: "0644" }
18         - { src: "letsencrypt-XXX.cert", dest: "letsencrypt-XXX.cert", mode: "0644" }
19         - { src: "letsencrypt-XXX.crt", dest: "letsencrypt-XXX.crt", mode: "0644" }
20         - { src: "letsencrypt-XXX.key", dest: "letsencrypt-XXX.key", mode: "0600" }
21       notify: restart smtpd
22
23   handlers:
24
25     - name: restart smtpd
26       service:
27         name: "smtpd"
28         state: "restarted"

Code:
  1 ---
  2 - import_playbook: letsencrypt-copy-cert-mail.yml
  3 - import_playbook: letsencrypt-copy-cert-www.yml
  4 - import_playbook: letsencrypt-copy-cert-xmpp.yml
 
Zuletzt bearbeitet:
Im Standard startet Ansible nur 5 parallele Prozesse. Mit -f kannst du die Anzahl erhöhen.

Code:
ansible-playbook playbook.yml -f 20

Wenn man viele Hosts in seinem Inventory hat beschleunigt das das ganze schon ganz gut.
 
Wenn man viele Hosts in seinem Inventory hat beschleunigt das das ganze schon ganz gut.
Das bringt bei mir keine messbaren Verbesserungen. Ich habe mal noch folgendes versucht:
Code:
ls letsencrypt-copy-cert-*.yml | xargs -n1 -P3 -I {} ansible-playbook {}
Dies beschleunigt die Sache ein bisschen besser. Bei einem Test mit 6 Jails von 28 auf 15 Sekunden.
oder 'free' strategy?
Ich danke dies ist nur bei den Tasks möglich nicht aber auf einem Playbook welche parallel gestartet werden sollen. Ich habe pro Jail ein Playbook welche doch unterschiedlich sein können. Daher das "Master" Playbook zum zusammenfassen.
 
Zurück
Oben