Назад | Перейти на главную страницу

выполнять определенную роль при любых условиях

Я создал роль под названием cleanup это моя последняя роль в playbook (который выполняет некоторые очистки после запуска всех других ролей)

вот упрощенная версия моей пьесы

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

проблема в том, что если playbook не работает, ansible не запускает чистую роль, как я могу отметить эту конкретную роль как важную, чтобы ansible запускал ее, даже если все другие роли в playbook потерпели неудачу?

В Ansible есть функция ignore_errors для задач. Но твой случай обо всей роли. Я думаю, вы можете разделить роли двух глав в файле playbook. Это сложно, но эффективно.

- hosts: myhost
  roles:
    - common
    - rabbitmq

- hosts: myhost
  roles:
    - cleanup

Так что, если вы поднимете ошибку в первой главе, playbook продолжит работу в следующей главе :)

Также ! В Ansible 2.0 появился новый блочный механизм, это не совсем то, что вам нужно, но, возможно, вы думаете переделать свой логический механизм.

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"

Блоки Ansible