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 для реализации обработчика ошибок. Этот сценарий состоит из трех задач:

  1. Загрузка файла installer.deb в каталог /tmp/ с помощью модуля ansible.buitlin.fetch.

  2. Установка пакета /tmp/installer.deb с помощью модуля ansible.builtin.apt.

  3. Удаление пакета /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