Condição de Execução do Ansible Post Tasks

2

Gostaria de saber em que condições um Ansible post_task será executado? Se as pré-tarefas ou funções tivessem alguma falha, as tarefas posteriores seriam executadas?

Por exemplo, eu gostaria de limpar o servidor se e somente se estiver parado. No script a seguir, o server_dir será removido se o servidor não for parado corretamente?

---

- hosts: webservers

  pre_tasks:
    - shell: echo 'stopping server...'

  roles:
    - { role: stop_server }

  post_tasks:
    - file: path="{{ server_dir }}" state=absent
    
por Mincong Huang 17.03.2017 / 18:44

1 resposta

2

As tarefas em post_tasks não serão executadas quando as tarefas anteriores falharem (o que significa que o código de retorno da tarefa não é 0). Esse é o comportamento padrão do Ansible e parte do design do Ansible:

Ansible is actually designed to be a “fail-fast” and ordered system [...]

Ansible test_strategies

fail-fast significa que Ansible interromperá a execução de toda a reprodução assim que uma tarefa falhar (contanto que você não defina o parâmetro ignore_errors: True para a tarefa).

A documentação do post_tasks está incompleta, mas se você escrever um pequeno manual de testes e um papel, verá que o Ansible se comporta como esperado.

O que faz sentido, porque você pode querer usar pre_tasks e post_tasks para remover e adicionar um nó de e para um cluster e não deseja que seu nó seja adicionado a um cluster quando a função não for executado sem erros.

    
por 18.03.2017 / 09:46

Tags