2015-12-01 13 views
20

Ich habe ein Playbook, das auf der angegebenen IP konfigurieren sollte, und dann eine Verbindung zu dieser App herstellen, um Sachen darin zu konfigurieren.Erzwingen, dass der Handler ausgeführt wird, bevor eine Task in Ansible ausgeführt wird?

Ich habe ein Problem: Ich muss App neu starten, nachdem ich irgendetwas in der App-Konfiguration geändert habe, und wenn ich App nicht neu starten, Verbindung fehlgeschlagen (keine Verbindung, weil App nichts über neue Konfiguration mit neuen IP-Adresse versuche ich zuzugreifen).

Mein aktuelles Textbuch:

tasks: 
- name: Configure app 
    template: src=app.conf.j2 dest=/etc/app.conf 
    notify: restart app 

- name: Change data in app 
    configure_app: host={{new_ip}} data={{data}} 

handlers: 
- name: restart app 
    service: name=app state=restarted 

Ich brauche den Handler zu zwingen, zu laufen, wenn configure_app geändert, bevor 'Daten ändern in app' ausgeführt wird.

Antwort

40

Wenn Sie den Handler laufen zwischen den beiden Aufgaben statt am Ende des Spiels erzwingen möchten, müssen Sie dies zwischen den beiden Aufgaben setzen:

- meta: flush_handlers

Beispiel aus dem genommen ansible documentation:

tasks: 
    - shell: some tasks go here 
    - meta: flush_handlers 
    - shell: some other tasks 

Beachten Sie, dass diese alle anhängigen Handler verursacht zu diesem Zeitpunkt zu laufen, nicht nur die spezifischen.

Verwandte Themen