Ansible 可分配角色工作流问题

Ansible 可分配角色工作流问题,ansible,ansible-role,ansible-handlers,Ansible,Ansible Role,Ansible Handlers,我想(第1步)更改postgresql配置文件,(第2步)重新启动服务,然后(第3步)添加db用户 ../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 - nam

我想(第1步)更改postgresql配置文件,(第2步)重新启动服务,然后(第3步)添加db用户

../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
---
- name: restart postgresql service
  service: name=postgresql state=restarted enabled='yes'
../roles/postgres/handlers/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
---
- name: restart postgresql service
  service: name=postgresql state=restarted enabled='yes'
博士后

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

  roles:
    - role: postgres
问题:ansible角色中的真正工作流是:step1->step3->step2

我可以通过将handlers任务移动到
。/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

- meta: flush_handlers

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

请查看帮助中心: