É possível ter "tarefas posteriores" em uma função? ou seja, tarefas definidas em um papel, que seriam executadas no final da peça?
Por exemplo, tenho uma common
função da qual depende a maioria das outras funções. A common
função fornece algumas coisas básicas para evitar repetições, como ajustes na configuração do yum, etc.
eu reparei nissomanuais têmpost_tasks
. Fiquei me perguntando se é possível definir tarefas posteriores nas próprias funções?
Atualizar: Citando oDocumentação Ansible:
Manipuladores: executando operações na mudança
...
Estas ações de 'notificação' são acionadas no final de cada bloco de tarefas num manual e só serão acionadas uma vez, mesmo se notificadas por múltiplas tarefas diferentes.
...
As funções são descritas mais adiante. Vale ressaltar que os manipuladores são processados automaticamente entre as seções 'pre_tasks', 'roles', 'tasks' e 'post_tasks'.
...
Evidentemente, esta parte da documentação é enganosa ou mentirosa (= há um erro nela). Parece que os manipuladores são demitidosno final de cada peça, entre tasks
e post_tasks
, como mostra este teste simples a seguir:
- 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 respondeu, não posso aceitar, mas não me senti bem em responder minha própria pergunta com dicas dos comentários...)
Responder1
Esse comportamento é causado por um bug no Ansible 1.9.x, atualmente rastreado aqui:https://github.com/ansible/ansible/issues/12575