Skip to content
Merged
Changes from 2 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
32 changes: 32 additions & 0 deletions docs/docsite/rst/playbook_guide/playbooks_handlers.rst
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,38 @@ Tasks can instruct one or more handlers to execute using the ``notify`` keyword.
In the above example the handlers are executed on task change in the following order: ``Restart memcached``, ``Restart apache``. Handlers are executed in the order they are defined in the ``handlers`` section, not in the order listed in the ``notify`` statement. Notifying the same handler multiple times will result in executing the handler only once regardless of how many tasks notify it. For example, if multiple tasks update a configuration file and notify a handler to restart Apache, Ansible only bounces Apache once to avoid unnecessary restarts.


Notifying and loops
-------------------

Tasks can use loops to notify handlers. This is particularly useful when combined with variables to trigger multiple dynamic notifications.

.. code-block:: yaml

tasks:
- name: Template services
ansible.builtin.template:
src: "{{ item }}.j2"
dest: /etc/systemd/system/{{ item }}.service
notify: Restart {{ item }}
loop:
- memcached
- apache

handlers:
- name: Restart memcached
ansible.builtin.service:
name: memcached
state: restarted

- name: Restart apache
ansible.builtin.service:
name: apache
state: restarted

Note that the handlers are triggered if the task as a whole is changed, for loops that is if any loop item changes.
In the above example both memcached and apache will be restarted if either template file is changed, neither will be restarted if no file changes.


Naming handlers
---------------

Expand Down