Проблема рабочего процесса в роли Ansible
Я хочу (шаг 1) изменить файл конфигурации postgresql, (шаг 2) перезапустить службу и затем (шаг 3) добавить пользователя БД.
../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
Проблема: реальный рабочий процесс в заданных ролях: шаг1 -> шаг3 -> шаг2.
Я могу это исправить, переместив задачу обработчиков в ../roles/postgres/tasks/main.yml
, но он перезапустит службу независимо от того, был ли изменен файл конфигурации.
Какова лучшая практика для такого запроса?
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