Is it possible to have "post tasks" in a role? i.e tasks defined in a role, that would run at the end of the play?
For example, I have a
common role, which most other roles depend on. The
common role provides some basic stuff to avoid repetition, such as tweaks to yum config, etc.
I notice that playbooks have
post_tasks. I was wondering if it is possible to define post tasks in roles themselves?
Update: Quoting the Ansible documentation:
Handlers: Running Operations On Change
These ‘notify’ actions are triggered at the end of each block of tasks in a playbook, and will only be triggered once even if notified by multiple different tasks.
Roles are described later on. It’s worthwhile to point out that handlers are automatically processed between ‘pre_tasks’, ‘roles’, ‘tasks’, and ‘post_tasks’ sections.
Evidently this part of the documentation is either misleading, or down right lying (=there is an error in it). It appears that handlers are fired at the end of each play, between the
post_tasks, as this following simple test shows:
- name: Handlers test hosts: all gather_facts: no roles: - some-role # some-role depends on common tasks: - name: This a task shell: /bin/true post_tasks: - name: This is a post task shell: /bin/true
And the common role:
# tasks/main.yml - name: Registering handler shell: /bin/true notify: this is a handler #handlers/main.yml - name: this is a handler shell: /bin/true
(Since nobody provided an answer I can't accept one, but didn't feel right answering my own question with tips from the comments...)