ansible: Verwenden von with_items mit dem Benachrichtigungshandler

Ich möchte eine Variable an einen Benachrichtigungs-Handler übergeben, kann sie aber hier auf SO, in den Dokumenten oder in den Problemen im Github-Repo nirgends finden, wie es geht. Ich stelle mehrere Webapps bereit. Wenn der Code für eine dieser Webapps geändert wird, sollte der Dienst für diese Webapp neu gestartet werden.

Vondiese SO Frage, Ich habe das zum Laufen gebracht, irgendwie:

- hosts: localhost
  tasks:
  - name: "task 1"
    shell: "echo {{ item }}"
    register: "task_1_output"
    with_items: [a,b]
  - name: "task 2"
    debug:
      msg: "{{ item.item }}"
    when: item.changed
    with_items: task_1_output.results

(In test.yml eintragen und mit @ ausführansible-playbook test.yml -c local.)

Aber dies registriert das Ergebnis der ersten Task und führt eine bedingte Schleife über das Ergebnis der zweiten Task durch. Mein Problem ist, dass es chaotisch wird, wenn Sie zwei oder mehr Aufgaben haben, die die zweite Aufgabe benachrichtigen müssen! Starten Sie beispielsweise den Webdienst neu, wenn entweder der Code aktualisiert oder die Konfiguration geändert wurde.

AFAICT, es gibt keine Möglichkeit, eine Variable an einen Handler zu übergeben. Das würde es für mich sauber regeln. Ich habe auf Github einige Probleme gefunden, bei denen andere auf dasselbe Problem stoßen, und es werden einige Syntaxvorschläge gemacht, von denen jedoch keines tatsächlich funktioniert.

Einschließen eines Unter-Playbooks funktioniert auch nicht, da mitwith_items zusammen mitinclude wurde abgelehnt.

n meinen Playbooks habe ich einsite.yml, das die Rollen einer Gruppe auflistet, und dann imgroup_vars für diese Gruppe definiere ich die Liste der Webapps (einschließlich der Versionen), die installiert werden sollen. Dies scheint mir richtig zu sein, da ich auf diese Weise dasselbe Playbook für die Inszenierung und Produktion verwenden kann. Vielleicht besteht die einzige Lösung darin, die Rolle mehrmals zu definieren und die Liste der Rollen für Staging und Produktion zu duplizieren.

Also, was ist die Weisheit hier?

Antworten auf die Frage(2)

Ihre Antwort auf die Frage