failed#
Расширение тестирования ansible.builtin.failed проверяет зафиксирован ли отказ при выполнении задачи.
Для этого оно сравнивает значение поля failed в данных о состоянии задачи со значением True.
Важно
Задача может быть пропущена или завершиться неуспешно по разным причинам (ошибки синтаксиса, ошибки в шаблоне, недоступность узла и так далее).
В некоторых случаях при этом поле failed не создается и не заполняется.
У этого расширения есть также другое название – ansible.builtin.failure.
Описание применения расширений тестирования приведено в документе Тестирование.
Особенности работы#
Для проверки статуса задачи используйте конструкцию:
<task_data> is ansible.builtin.failed
Здесь <task_data> – словарь с данными о задаче.
Его можно получить с помощью директивы register.
Для инверсии результата сравнения добавьте not:
<task_data> is not ansible.builtin.failed
Совет
Также для инверсии результата вместо ansible.builtin.failed можно использовать расширение тестирования ansible.builtin.success.
Входные значения#
Расширение принимает единственный входной параметр Input – словарь данных о состоянии задачи Ansible.
Выходные значения#
Расширение возвращает значение True или False в зависимости от результата проверки:
False– задача завершена успешно;True– при выполнении задачи возникли ошибки.
Пример#
Следующий пример демонстрирует использование ansible.builtin.failed для реализации обработчика ошибок.
Этот сценарий состоит из трех задач:
Загрузка файла
installer.debв каталог/tmp/с помощью модуля ansible.buitlin.fetch.Установка пакета
/tmp/installer.debс помощью модуля ansible.builtin.apt.Удаление пакета
/tmp/installer.deb. Эта задача выполняется только в том случае, если задача установки пакета выполнена без ошибок.
---
# ...
tasks:
- name: Download DEB package from URI
ansible.builtin.fetch:
dest: /tmp/installer.deb
src: https://example.com/downloads/installer.deb
- name: Install DEB package
ansible.builtin.apt:
deb: /tmp/installer.deb
state: present
register: install_software
- name: Remove installer
ansible.builtin.file:
path: /tmp/installer.deb
state: absent
when: install_software is not ansible.builtin.failed