【问题标题】:Ansible roles workflow issueAnsible 角色工作流程问题
【发布时间】:2017-12-19 02:02:22
【问题描述】:

我想(step1)更改 postgresql 配置文件,(step2)重启服务,然后(step3)添加 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

../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

问题:ansible 角色中真正的工作流程是:step1 -> step3 -> step2。

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

此类请求的最佳做法是什么?

【问题讨论】:

    标签: ansible ansible-role ansible-handlers


    【解决方案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
    
    猜你喜欢
    • 2014-11-25
    • 1970-01-01
    • 1970-01-01
    • 2011-05-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多