Проблема с рабочим процессом ролей Ansible

Я хочу (шаг 1) изменить файл конфигурации postgresql, (шаг 2) перезапустить службу, а затем (шаг 3) добавить пользователя БД.

../роли/постгрес/задачи/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

../роли/постгрес/обработчики/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

Проблема: реальный рабочий процесс в ansible-ролях: шаг1 -> шаг3 -> шаг2.

Я могу исправить это, переместив задачу обработчиков в ../roles/postgres/tasks/main.yml, но она перезапустит службу независимо от того, был ли изменен файл конфигурации.

Какова наилучшая практика для такого запроса?


person Roy Zeng    schedule 19.12.2017    source источник


Ответы (1)


Сбросить обработчики с meta: flush_handlers перед задачей, которая требует этого:

- 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
person techraf    schedule 19.12.2017
comment
Пожалуйста, загляните в Справочный центр: не добавляйте комментарий к своему вопросу или ответу, чтобы сказать спасибо. - person techraf; 19.12.2017