Ansible handler does not run multiple handler tasks

ansible, handler

Solution

As of Ansible 2.2, you can now notify multiple handlers at the same time using the `listen` directive:

- name: stop openfire
  listen: restart openfire
  service: name=openfire state=stopped
  ignore_errors: true
  sudo: yes

- name: remove openfire pid file
  listen: restart openfire
  file: path=/var/run/openfire.pid state=absent
  sudo: yes

- name: restart openfire
  listen: restart openfire
  service: name=openfire state=restarted enabled=yes
  sudo: yes

Problem

We have one Ansible role that needs to run three tasks in the `handlers/main.yml` task file, but it only runs the first task. How do I force it to run the other two tasks? I do have the `ignore` flag on for if the first task fails. The `tasks/main.yml` file looks like: ``` - name: openfire | Copy plugins into openfire/plugins copy: src={{ srcdir }}/xmpp/{{ item }} dest=${bindir}/openfire/plugins/{{ item }} with_items: - x.jar - y.jar sudo: yes sudo_user: ${tomcat_user} notify: restart openfire - name: openfire | Copy jars into openfire/lib copy: src={{ srcdir }}/xmpp/{{ item }} dest=${bindir}/openfire/lib/{{ item }} with_items: - a.jar - b.jar sudo: yes sudo_user: ${tomcat_user} notify: restart openfire ``` The `handlers/main.yml` file looks like: ``` - name: restart openfire service: name=openfire state=stopped ignore_errors: true sudo: yes - name: restart openfire file: path=/var/run/openfire.pid state=absent sudo: yes - name: restart openfire service: name=openfire state=restarted enabled=yes sudo: yes ``` Only the first handler task (shut down openfire) runs.

Original source