Skip to content
Merged
Changes from 1 commit
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
29 changes: 29 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,35 @@ 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 }}

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

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

It is important to note that the notifications 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