As tarefas seguras podem ser usadas como dependências?

2

Atualmente, tenho três tarefas seguras:

  • criar vhosts
  • configuração de teste
  • recarregar o nginx

Eu agora registrei os dois últimos como manipuladores, mas as notificações antecipadas de ansible parecem erradas pelo que estou fazendo:

  • criar vhosts, notificar configuração de teste (ok)
  • test config, notificar reload (por que um teste de configuração implica um recarregamento)
  • recarregar o nginx

Eu gostaria de uma estrutura como:

  • crie vhosts, notifique o nginx para recarregar
  • recarregar nginx: requer teste de configuração
  • teste de configuração: sucesso
  • recarregar o nginx

Só porque a semântica parece mais correta. Não deve ser apenas uma sequência, nem deve algo como um teste de configuração notificar um recarregamento, porque isso está apenas implementando uma sequência novamente sem lógica (como um recarregamento requer um teste primeiro)

    
por allo 24.12.2015 / 00:58

1 resposta

3

Uma condicional simples em sua cartilha com o uso de when deve funcionar, caso você esteja ignorando erros. Como por padrão, a execução do playbook Ansible termina quando ele encontra um erro. Nginx configtest sai com o código de status do shell de 0 no sucesso e 1 na falha, e você pode usar isso para executar tarefas diferentes dependendo do resultado -

tasks:
  - shell: service nginx configtest
    ignore_errors: True
    register: result

  - shell: service nginx reload
    when: result|success

  - local_action: mail subject='Nginx config error.'
    when: result|failed
  
    
por 05.01.2016 / 06:02

Tags