executa um papel específico em qualquer condição

3

Eu criei uma função chamada cleanup , que é minha função final no playbook (que lida com algumas limpezas depois de executar todas as outras funções)

aqui está uma versão simplificada do meu manual de jogo

- hosts: myhost
  roles:
    - common
    - postgresql
    - rabbitmq
    - web
    - cleanup

o problema é se o livro de jogos falha e o ansible não executa um papel limpo, como posso marcar esse papel específico como importante, de modo que ele pudesse ser executado mesmo se todos os outros papéis no manual de jogo falharem?

    
por aliva 06.04.2016 / 14:10

1 resposta

2

Ansible tem o recurso ignore_errors para tarefas. Mas seu caso sobre o papel inteiro. Eu acho que você pode separar papéis dois capítulos em um arquivo de cartilha. Isso é complicado, mas eficiente.

- hosts: myhost
  roles:
    - common
    - rabbitmq

- hosts: myhost
  roles:
    - cleanup

Então, se você levantar qualquer falha no primeiro manual do capítulo, continuará no próximo capítulo:)

Além disso! O Ansible 2.0 tem um novo mecanismo de bloco, não é exatamente o que você quer, mas talvez você pense em redesenhar seu mecanismo lógico.

tasks:
 block:
  - debug: msg='i execute normally'
  - command: /bin/false
  - debug: msg='i never execute, cause ERROR'
 rescue:
  - debug: msg='I caught an error'
  - command: /bin/false
  - debug: msg='I also never execute :-('
 always:
  - debug: msg="this always executes"

Blocos Ansíveis

    
por 12.04.2016 / 01:15

Tags