roles:
- { role: some_role }
- { role: role_that_will_fail }
- name: Play #2
Задача: если выполнение play #1 фейлится, продолжить выполнение play #2 в зависимости от текста ошибки.
Изменить роль role_that_will_fail - не вариант.
Если сделать - { role: role_that_will_fail, ignore_errors: true}, то эффект немного не тот.
Если во время выполнения таска возникает ошибка, то он просто скипается - такой вариант не подходит.
Нужно, чтобы выполнение play #1 прекратилось, и начал выполняться play #2.
Пришёл к следующему варианту:
- name: Play #1
hosts: hostname
tasks:
- block:
- include_role:
name: "{{ item.role }}"
loop:
- { role: some_role }
- { role: role_that_will_fail }
rescue:
- name: Make sure that error isn't fatal
fail:
msg: Cannot recover
when: ansible_failed_result.msg != "Minor error, can continue"
- name: Play #2
Как такой вариант? Или может всё-таки попроще можно?
Или задумка вообще сама по себе не оч?
роль, которая фейлится: почему ее нельзя починить?
Обсуждают сегодня