tarefa ansible não aciona manipuladores

tarefa ansible não aciona manipuladores

Estou tendo problemas para conseguir que uma tarefa dentro de uma função ansible acione manipuladores. Aqui estão os arquivos que estou usando:

roles/services/tasks/postgresql.ymlmostra

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

- 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

Quando executo o manual, a tarefa é bem-sucedida e reconhece que mudou de estado, mas não aciona os manipuladores. Esta é a última tarefa nessa função e, quando concluída, o ansible passa para a primeira tarefa na próxima função do meu manual:

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

TASK: [passenger | install passenger gem] ************************************* 

Tentei alterar o recuo de várias maneiras, sem sucesso. Espero que alguém com novos olhos veja o que estou perdendo.

Responder1

Você pode não estar esperando o suficiente. Ansible esperará pelos manipuladores o maior tempo possível. Se você quiser fazer todos os manipuladores que já estão na fila, tente

 - meta: flush_handlers

o que acho muito útil. Por exemplo, depois de instalar um pacote debian, quero que ele elimine os daemons imediatamente, então adiciono o meta comando logo após a instalação do pacote e o ansible não me faz esperar.

informação relacionada