Как остановить непреодолимую задачу успешно, не провалившись?
Я искал примеры того, как остановить выполнение задачи Ansible, не нарушая ее.
Простой пример:
- name: check file
stat: path={{some_path}}
register: check_file_result
- name: if file exists, stop
**fail**: msg="file exists, stopping"
when: check_file_result.stat.exists
Это работает так, как в нем останавливается выполнение, но не удается с тонны красного ароматизированного текста, возможно, останавливая целую книгу от выполнения дальнейших задач. Есть ли способ остановить выполнение, как будто все закончилось "ОК"?
Примечание. Обходным путем является просто добавление "when: check_file_result.stat.exists == false", но это очень мало масштабируется.
Ответы
Ответ 1
Если есть несколько задач, которые вы не хотите выполнять, когда check_file_result.stat.exists
, я бы, вероятно, инкапсулировал все эти задачи в отдельный файл, а затем условно include
этот файл, например
- name: check file
stat: path={{ some_path }}
register: check_file_result
- include: file_ops.yml
when: check_file_result.stat.exists
Пример структуры каталогов:
|- roles/
|- foo
|- tasks
|- main.yml
|- file_ops.yml
|- vars
|- main.yml
Использование этого метода DRY: -)