Esse comportamento é causado por um bug no Ansible 1.9.x, que é atualmente rastreado aqui: link
É possível ter "post tasks" em uma função? ou seja, tarefas definidas em um papel, que seriam executadas no final da peça?
Por exemplo, tenho uma função common
, da qual a maioria das outras funções depende. A função common
fornece algumas coisas básicas para evitar a repetição, como ajustes na configuração do yum, etc.
Noto que os playbooks têm post_tasks
. Eu queria saber se é possível definir tarefas de postagens em papéis?
Atualização: Citando a documentação Ansible :
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.
...
Evidentemente, essa parte da documentação é enganosa ou direta (= há um erro nela). Parece que os manipuladores são acionados ao final de cada reprodução , entre os tasks
e post_tasks
, como mostra o seguinte teste simples:
- 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
E o papel comum:
# 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
(Como ninguém forneceu uma resposta, não posso aceitar uma, mas não me senti bem respondendo a minha própria pergunta com dicas dos comentários ...)
Esse comportamento é causado por um bug no Ansible 1.9.x, que é atualmente rastreado aqui: link
Tags ansible