Tarefas de pós-tarefa ansíveis

5

É 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 ...)

    
por Amir Abiri 26.09.2015 / 16:20

1 resposta

1

Esse comportamento é causado por um bug no Ansible 1.9.x, que é atualmente rastreado aqui: link

    
por 31.12.2015 / 02:48

Tags