任务不会触发处理程序

我很难得到一个可以发挥作用的任务来触发处理程序。 这里是我使用的文件:

roles/services/tasks/postgresql.yml显示

 - name: install postgresql packages apt: name={{ item }} state=present sudo: yes with_items: - postgresql - libpq-dev - python-psycopg2 notify: - set postgres password - configure md5 security - restart postgres server 

roles/services/handlers/main.yml显示

 - name: set postgres password sudo: yes sudo_user: postgres postgresql_user: name=postgres password=newpass - name: configure md5 security sudo: yes copy: src=pg_hba.conf dest=/etc/postgresql/9.3/main/pg_hba.conf group=postgres owner=postgres backup=yes - name: restart postgres server sudo: yes service: name=postgresql enabled=yes state=restarted 

当我运行剧本时,任务成功并确认它改变了状态,但是不触发处理程序。 这是这个angular色的最后一个任务,完成之后,我的剧本中的下一个angular色将首先完成任务:

 TASK: [services | install postgresql packages] ******************************** changed: [IP.REMOVED.##] => (item=postgresql,libpq-dev,python-psycopg2) TASK: [passenger | install passenger gem] ************************************* 

我试着以各种方式改变缩进,没有成功。 我希望有新鲜眼睛的人会看到我失踪的东西。

你可能没有等待足够长的时间。 Ansible会尽可能等待处理程序。 如果你想做所有已经排队的处理程序尝试

  - meta: flush_handlers 

我发现非常方便。 例如,在我安装了一个debian软件包之后,我希望它能够杀死这个守护进程,所以我在安装软件包之后立即添加了meta命令,并且不会让我等待。