Ansible角色工作流问题

问题描述 投票:0回答:1

我想(step1)更改postgresql配置文件,(step2)重启服务然后(step3)添加db user。

../roles/post GRE是/tasks/卖弄.阴谋论

- 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/post GRE是/handlers/卖弄.阴谋论

---
- 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角色的真正工作流程是:step1 - > step3 - > step2。

我可以通过将处理程序任务移动到../roles/postgres/tasks/main.yml来修复它,但无论配置文件是否更改,它都将重新启动服务。

这种要求的最佳做法是什么?

ansible ansible-role ansible-handlers
1个回答
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
© www.soinside.com 2019 - 2024. All rights reserved.