Ansible role post tasks

ansible

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 tasks and 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…)

Best Answer

This behavior is caused by a bug in Ansible 1.9.x, it's currently tracked here: https://github.com/ansible/ansible/issues/12575