Ответ 1
Не используйте блок post_tasks
а скорее post_tasks
очистку как часть обычных tasks
.
В настоящее время я пишу песню Ansible, которая следует за этим общим форматом и запускается с помощью задания cron:
pre_tasks:
-Configuration / package installation
tasks:
-Work with installed packages
post_tasks:
-Cleanup / uninstall packages
Проблема с вышеизложенным заключается в том, что иногда команда в разделе " tasks
" терпит неудачу, и когда он не post_tasks
секцию post_tasks
это приводит к post_tasks
, что система находится в беспорядочном состоянии. Можно ли принудительно запускать команды в post_tasks
даже если происходит сбой или фатальная ошибка?
Мой текущий подход заключается в применении ignore_errors: yes
для всего, что находится в разделе tasks
, а затем применяется when:
условно для каждой задачи индивидуально проверять, удалось ли выполнить предыдущую команду.
Это решение кажется ignore_errors: yes
, но оно ухудшается, потому что даже с ignore_errors: yes
set, если для задачи встречается фатальная ошибка, вся игра все равно будет немедленно терпеть неудачу, поэтому мне также нужно запустить скрипт cron'd bash вручную проверьте вещи после выполнения игры.
Все, что я хочу, - это гарантия того, что даже если tasks
не удастся, post_tasks
все равно будет работать. Я уверен, что есть способ сделать это, не прибегая к оболочкам сценариев bash.
Не используйте блок post_tasks
а скорее post_tasks
очистку как часть обычных tasks
.
Эта функция стала доступна в Ansible 2.0:
Это документация для нового block
маркеров block
, rescue
и always
.
Вы должны использовать обработчики (http://docs.ansible.com/ansible/playbooks_intro.html) и установить:
force_handlers: true
Пожалуйста, ознакомьтесь с интеграционным тестом KubeNow (https://github.com/kubenow/KubeNow/blob/master/test/integration-test.yml).