Ansible: выполнить очистку при сбое задачи

В настоящее время я пишу песню 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.

Ответы

Ответ 1

Не используйте блок post_tasks а скорее post_tasks очистку как часть обычных tasks.

Ответ 2

Эта функция стала доступна в Ansible 2.0:

Это документация для нового block маркеров block, rescue и always.