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

Как правильно обрабатывать ошибки в анзибле?

Насколько я могу судить, ansible выполняет только обработку ошибок. на уровне задач, чего действительно недостаточно для того, что я хочу, чтобы он мог делать.

В частности, мой вариант использования - это обычное развертывание, поэтому мне нужно сделать следующее:

Все это прекрасно, кроме подхода к обработке ошибок, который, как я надеялся, сработает ...

- include: deploy.yml
  ignore_errors: yes
  register: deploy
- include: rollback.yml
  when: deploy | failed

... Нет.

Теперь я могу понять, почему это не так - задача включения просто проверяет, может ли она включить файл, а не может ли включенный файл работать до завершения. Я смирился с этим.

К сожалению, это оставляет меня в некотором роде. Автоматическая проверка ошибок каждой операции в сочетании с библиотекой высокоуровневых операций - вот вся причина, по которой я использую ansible. Но в отсутствие зрелого механизма восстановления уведомление об отказе перестает быть полезным.

У кого-нибудь есть (вменяемые) обходные пути? Я мог бы добавить обработчик к каждой отдельной задаче под этим include и попробуй сделать так, но ... правда? Это не может быть решением - или, скорее, я не могу продолжать верить в человечество и позвольте этому быть решением.

http://www.ansible.com/blog/ansible-2.0-launch

Блоки вводят концепцию обработки исключений в playbooks и были смоделированы после структуры try / except / finally Python (и многих других языков). Это упрощает разработку сценариев и задач, где сбои задач могут быть обнаружены и устранены с помощью одного сценария гораздо проще, чем раньше.