Тестовые плагины
Тестовые плагины проверяют выражения шаблонов и возвращают True или False. С помощью тестовых плагинов можно создавать условные конструкции для реализации логики задач, блоков, plays, плейбуков и ролей. Ansible использует стандартные тесты, поставляемые вместе с Jinja, и добавляет несколько специализированных тестовых плагинов. Вы можете создавать собственные тестовые плагины Ansible.
Включение тестовых плагинов
Вы можете добавить собственный тестовый плагин, поместив его в каталог test_plugins рядом с play, внутрь роли или в один из каталогов источников тестовых плагинов, настроенных в ansible.cfg.
Использование тестовых плагинов
Тесты можно использовать везде, где в Ansible применяются шаблоны: в play, в файле переменных или в шаблоне Jinja2 для модуля template. Дополнительные сведения об использовании тестовых плагинов см. в разделе Тесты.
Тесты всегда возвращают True или False, то есть всегда имеют логический тип. Если вам нужен другой тип возвращаемого значения, используйте фильтры.
Тестовые плагины можно распознать по оператору is в шаблоне; их также можно использовать как часть семейства фильтров select.
vars:
is_ready: '{{ task_result is success }}'
tasks:
- name: conditionals are always in 'template' context
action: dostuff
when: task_result is failed
У тестов всегда есть _input, и обычно именно оно находится слева от is. Тесты также могут принимать дополнительные параметры, как и большинство функций в языках программирования. Эти параметры могут быть positional (передаются по порядку) или named (передаются в виде пар key=value). При передаче обоих типов аргументов сначала указывайте позиционные.
tasks:
- name: pass a positional parameter to match test
action: dostuff
when: myurl is match("https://example.com/users/.*/resources")
- name: pass named parameter to truthy test
action: dostuff
when: myvariable is truthy(convert_bool=True)
- name: pass both types to 'version' test
action: dostuff
when: sample_semver_var is version('2.0.0-rc.1+build.123', 'lt', version_type='semver')
Использование тестовых плагинов со списками
Как упоминалось выше, один из способов использования тестов — семейство фильтров select (select, reject, selectattr, rejectattr).
# give me only defined variables from a list of variables, using 'defined' test
good_vars: "{{ all_vars|select('defined') }}"
# this uses the 'equalto' test to filter out non 'fixed' type of addresses from a list
only_fixed_addresses: "{{ all_addresses|selectattr('type', 'equalto', 'fixed') }}"
# this does the opposite of the previous one
only_fixed_addresses: "{{ all_addresses|rejectattr('type', 'equalto', 'fixed') }}"
Список плагинов
Чтобы просмотреть список доступных плагинов, используйте ansible-doc -t test -l. Чтобы ознакомиться с документацией и примерами для конкретного плагина, используйте ansible-doc -t test <plugin name>.
См. также
- Плейбуки Ansible
-
Введение в плейбуки
- Тесты
-
Использование тестов
- Условные конструкции
-
Использование условных операторов
- Плагины фильтров
-
Плагины фильтров
- Тесты
-
Использование тестов
- Плагины поиска
-
Плагины поиска
- Общение
-
Есть вопросы? Нужна помощь? Хотите поделиться идеями? Посетите руководство по общению Ansible
© 2012–2018 Michael DeHaan
© 2018–2025 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/projects/ansible/latest/plugins/test.html