version#
Расширение тестирования ansible.builtin.version используется для сравнения строк, представляющих версии компонентов, с учетом различных схем версионирования.
Это позволяет задавать в сценариях автоматизации сложные условия обновления пакетов и операционных систем, исключая ошибки сравнения версий.
Описание применения расширений тестирования приведено в документе Тестирование.
Особенности работы#
Для сравнения версий используйте конструкцию:
<version_1> is ansible.builtin.version(<version_2>)
Для инверсии результата сравнения добавьте not:
<version_1> is not ansible.builtin.version(<version_2>)
Сравнение можно выполнять в гибком или строгом режиме, а также с использованием различных стандартов (SemVer, PEP 440 и другие).
Входные значения#
Расширение принимает единственное входное значение параметра Input в виде строки.
Input – значение версии для сравнения, помещается в левую часть выражения.
Пример:
Параметры#
Расширение принимает следующие параметры:
- operator#
Оператор сравнения.
Возможные значения:
Значение
Оператор
==равно
=eq<меньше
lt<=меньше или равно
le>больше
gt>=больше или равно
ge!=не равно
<>neЗначение по умолчанию:
eq.
- strict#
Использование строгой схемы версионирования, только формат
X.YилиX.Y.Z[a|b]N.Не может быть использован одновременно с параметром
version_type.Возможные значения:
false– использовать гибкую схему;true– использовать строгую схему.
Значение по умолчанию:
false.
- version#
Версия (выражение) для сравнения, помещаемая в правую часть выражения.
Обязательный параметр.
- version_type#
Схема версионирования, которая будет использоваться для сравнения.
Не может быть использован одновременно с параметром
strict.Возможные значения:
loose– максимально гибкий режим, допускающий любые строки;strict– строгий режим, разрешающий только форматыX.YиX.Y.Z[a|b]N;semver– семантическое версионирование в форматеMAJOR.MINOR.PATCHс возможными-rcи+build;semantic– синонимsemver;pep440– версионирование по стандарту PEP 440.
Значение по умолчанию:
loose.
Выходные значения#
Расширение возвращает значение True или False в зависимости от результата проверки:
False– условие не выполнено;True– условие выполнено.
Например:
Выражение |
Выходное значение |
|---|---|
|
|
|
|
|
|
Примеры#
Ниже приведены примеры использования расширения ansible.builtin.version в различных сценариях.
Сравнение версий с использованием различных операторов#
Следующий пример описывает сравнение версий с помощью различных операторов.
- name: Many operators
hosts: all
gather_facts: false
tasks:
- name: Is equal
assert:
that:
- "'1.0' is version('1.0', '==')"
- name: Is not equal
assert:
that:
- "'1.0' is version('2.0', '!=')"
- name: Less than
assert:
that:
- "'1.0' is version('2.0', '<')"
- name: Greather than
assert:
that:
- "'2.0' is version('1.0', '>')"
- name: Less or equal than
assert:
that:
- "'1.0' is version('1.0', '<=')"
- name: Greather or equal than
assert:
that:
- "'1.0' is version('1.0', '>=')"
Сравнение в строгом режиме#
Следующий пример описывает использование строгой схемы версионирования.
---
- name: Strict mode comparison
hosts: all
gather_facts: false
tasks:
- name: Is equal
assert:
that:
- "'1.0' is version('1.0', '==', strict=true)"
- name: Less than
assert:
that:
- "'1.0a1' is version('1.0', '<', strict=true)"
- name: Not equal
assert:
that:
- "'1.0' is version('2.0', '!=', strict=true)"
Сравнение по схеме семантического версионирования#
Следующий пример описывает использование семантического версионирования в формате MAJOR.MINOR.PATCH[-prerelease][+build].
---
- name: Validate with semver
hosts: all
gather_facts: false
tasks:
- name: Chech than 1.2.3 is less than 2.0.0 with SemVer
assert:
that:
- "'1.2.3' is version('2.0.0', 'lt', version_type='semver')"
Сравнение по стандарту PEP 440#
Следующий пример описывает использование стандарта PEP 440.
- name: Use PEP-440 for comparison
hosts: all
gather_facts: false
tasks:
- name: rc1 is less than final release
assert:
that:
- "'2.14.0rc1' is version('2.14.0', 'lt', version_type='pep440')"