La tarea ansible no activa los controladores.

La tarea ansible no activa los controladores.

Tengo problemas para conseguir que una tarea dentro de un rol ansible active controladores. Aquí están los archivos que estoy usando:

roles/services/tasks/postgresql.ymlmuestra

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

- 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

Cuando ejecuto el libro de jugadas, la tarea se realiza correctamente y reconoce que cambió de estado, pero no activa los controladores. Esta es la última tarea en ese rol, y cuando esté terminada, ansible pasa a la primera tarea en el siguiente rol en mi libro de jugadas:

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

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

Intenté cambiar la sangría de varias maneras, sin éxito. Espero que alguien con ojos nuevos vea lo que me estoy perdiendo.

Respuesta1

Puede que no estés esperando lo suficiente. Ansible esperará a los controladores el mayor tiempo posible. Si desea hacer todos los controladores que ya están en cola, intente

 - meta: flush_handlers

lo cual me parece muy útil. Por ejemplo, después de instalar un paquete Debian, quiero que elimine los demonios en ese momento, así que agrego el comando meta justo después de la instalación del paquete y ansible no me hace esperar.

información relacionada