2017-12-19 3 views
0

Ich möchte (Schritt1) Postgresql-Konfigurationsdatei ändern, (Schritt2) Service neu starten und dann (Schritt3) db Benutzer hinzufügen.Ansible Rollen Workflow-Problem

../roles/postgres/tasks/main.yml

- name: change postgre pg_hba.conf 
    template: src=pg_hba.conf.j2 dest=/etc/postgresql/9.4/main/pg_hba.conf 
    notify: restart postgresql service 
    tags: pg_hba 

- name: set password for postgres 
    postgresql_user: 
    db: postgres 
    user: postgres 
    password: postgres 

../roles/postgres/handlers/main.yml

--- 
- name: restart postgresql service 
    service: name=postgresql state=restarted enabled='yes' 

postgres.yml

- hosts: postgresql_server 
    remote_user: ubuntu 
    become: true 
    become_method: sudo 
    become_user: root 

    roles: 
    - role: postgres 

Problem: Der tatsächliche Workflow in ansible Rollen ist: Schritt1 -> Schritt3 -> Schritt2.

Ich kann es durch Verschieben von Handler Aufgabe in ../roles/postgres/tasks/main.yml beheben, aber es wird Service neu starten, egal ob Konfigurationsdatei geändert wurde.

Was ist die beste Vorgehensweise für eine solche Anfrage?

Antwort

1

Flush-Handler mit meta: flush_handlers vor der Aufgabe, die es erfordert:

- name: change postgre pg_hba.conf 
    template: src=pg_hba.conf.j2 dest=/etc/postgresql/9.4/main/pg_hba.conf 
    notify: restart postgresql service 
    tags: pg_hba 

- meta: flush_handlers 

- name: set password for postgres 
    postgresql_user: 
    db: postgres 
    user: postgres 
    password: postgres 
+0

Vielen Dank, es funktioniert. –

+0

Bitte werfen Sie einen Blick in die Hilfe: [Fügen Sie Ihrer Frage oder einer Antwort keinen Kommentar hinzu, um "Danke" zu sagen.] (Http://stackoverflow.com/help/someone-answers) – techraf

Verwandte Themen