Плагины тестирования
Плагины тестирования оценивают выражения шаблонов и возвращают True или False. С помощью плагинов тестирования можно создавать условные выражения для реализации логики ваших задач, блоков, действий, playbooks и ролей. Ansible использует стандартные тесты, поставляемые в составе Jinja, и добавляет некоторые специализированные плагины тестов. Вы можете создавать собственные плагины тестов Ansible.
Включение плагинов тестирования
Вы можете добавить пользовательский плагин тестирования, поместив его в директорию test_plugins рядом с вашим play, внутри роли или поместив его в одну из папок с плагинами тестирования, настроенных в ansible.cfg.
Использование плагинов тестирования
Вы можете использовать тесты там, где вы можете использовать шаблоны в Ansible: в play, в файле переменных или в Jinja2-шаблоне для модуля шаблона. Для получения дополнительной информации об использовании плагинов тестирования см. Тесты.
Тесты всегда возвращают 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 (передаваемые в виде пар ключ=значение). При передаче обоих типов позиционные аргументы должны идти первыми.
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 playbooks
-
Введение в playbooks
- Тесты
-
Использование тестов
- Условные выражения
-
Использование условных операторов
- Плагины фильтров
-
Плагины фильтров
- Тесты
-
Использование тестов
- Плагины поиска
-
Плагины поиска
- Связь
-
Есть вопросы? Нужна помощь? Хотите поделиться своими идеями? Посетите руководство Ansible по общению
© 2012–2018 Michael DeHaan
© 2018–2024 Red Hat, Inc.
Licensed under the GNU General Public License version 3.
https://docs.ansible.com/ansible/latest/plugins/test.html