Spec-Zone.ru › Ansible

Тестовые плагины

  • Включение тестовых плагинов
  • Использование тестовых плагинов

    • Использование тестовых плагинов со списками
  • Список плагинов

Тестовые плагины проверяют выражения шаблонов и возвращают 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API