any#
Расширение тестирования ansible.builtin.any проверяет, является ли хотя бы одно значение из списка истинным.
Поведение расширения аналогично функции any в Python: если в списке есть хотя бы один истинный элемент, результат проверки будет True.
У этого расширения есть также другое название – ansible.builtin.is_any.
Описание применения расширений тестирования приведено в документе Тестирование.
Особенности работы#
Для проверки логического условия используйте конструкцию:
<list> is ansible.builtin.any
Здесь <list> – это список логических значений или выражений, которые Ansible может интерпретировать как True или False.
Для инверсии результата сравнения добавьте not:
<list> is not ansible.builtin.any
Входные значения#
Расширение принимает единственный входной параметр Input – список значений для проверки.
Выходные значения#
Расширение возвращает значение True или False в зависимости от содержимого списка:
False– если все элементы в списке ложные;True– если хотя бы один элемент в списке истинен.
Пример#
Следующий пример демонстрирует использование ansible.builtin.any для реализации логической проверки.
Сценарий определяет три независимых условия, хотя бы одно из которых должно быть выполнено для продолжения работы. Если все условия ложные, выполнение сценария прерывается с помощью модуля ansible.builtin.assert.
---
# ...
vars:
disk_space_ok: "{{ disk_free_mb > 500 }}"
cpu_usage_ok: "{{ cpu_load < 0.7 }}"
manual_override: "{{ override_flag | default(false) }}"
tasks:
- name: Ensure at least one condition is satisfied
ansible.builtin.assert:
that:
- [disk_space_ok, cpu_usage_ok, manual_override] is ansible.builtin.any
fail_msg: >
None of the required conditions are met:
- Free disk space: {{ disk_free_mb }} MB
- CPU load: {{ cpu_load }}
- Manual override: {{ override_flag | default(false) }}
- name: Proceed with main task
ansible.builtin.debug:
msg: "Conditions met. Proceeding with execution."