Spec-Zone.ru › OpenTofu 1.9

Ограничения версий

Везде, где OpenTofu позволяет указать диапазон допустимых версий чего-либо, он ожидает строку специального формата, называемую ограничением версии. Ограничения версий используются при настройке:

  • Модулей
  • Требований к провайдерам
  • Параметра required_version в блоке terraform.

Синтаксис ограничений версий​

Синтаксис ограничений версий в OpenTofu очень похож на синтаксис, используемый в других системах управления зависимостями, таких как Bundler и NPM.

Блок кода
version = ">= 1.2.0, < 2.0.0"

Ограничение версии — это строковый литерал, содержащий одно или несколько условий, разделённых запятыми.

Каждое условие состоит из оператора и номера версии.

Номера версий должны представлять собой последовательность чисел, разделённых точками (например, 1.2.0); при необходимости к ним можно добавить суффикс, указывающий на бета-версию.

Допустимы следующие операторы:

  • = (или отсутствие оператора): допускает только один точный номер версии. Не может сочетаться с другими условиями.

  • !=: исключает точный номер версии.

  • >, >=, <, <=: сравнивают с указанной версией и допускают версии, для которых условие сравнения истинно. Оператор «больше» запрашивает более новые версии, а оператор «меньше» — более старые.

  • ~>: допускает увеличение только самого правого компонента версии. Например, чтобы разрешить новые выпуски исправлений в рамках определённого минорного выпуска, укажите полный номер версии: ~> 1.0.4 разрешит установить 1.0.5 и 1.0.10, но не 1.1.0. Обычно этот оператор называют пессимистическим ограничением.

Принцип действия ограничений версий​

Номер версии, удовлетворяющий всем применимым ограничениям, считается допустимым.

OpenTofu проверяет ограничения версий, чтобы определить, имеются ли у него допустимые версии самого OpenTofu, всех необходимых подключаемых модулей-провайдеров и требуемых модулей. Для подключаемых модулей и модулей он использует самую новую установленную версию, удовлетворяющую применимым ограничениям.

Если у OpenTofu нет допустимой версии необходимого подключаемого модуля или модуля, он попытается загрузить самую новую версию, удовлетворяющую применимым ограничениям.

Если OpenTofu не удаётся получить допустимые версии внешних зависимостей или у него нет допустимой версии самого себя, он не будет выполнять планирование, применение или операции с состоянием.

Корневой модуль и любой дочерний модуль могут ограничивать допустимые версии OpenTofu и используемых ими провайдеров. OpenTofu считает эти ограничения равнозначными и продолжит работу, только если можно выполнить их все.

Предварительная версия — это номер версии с суффиксом, начинающимся с дефиса, например 1.2.0-beta. Предварительную версию можно выбрать только с помощью точного ограничения версии (оператора = или без оператора). Предварительные версии не соответствуют операторам для нестрогого задания версии, таким как >=, ~> и т. д.

Рекомендации​

Версии модулей​

  • При использовании сторонних модулей указывайте конкретные версии, чтобы обновления выполнялись только тогда, когда вам это удобно.

  • Для модулей, сопровождаемых вашей организацией, можно указать диапазоны версий, если семантическое управление версиями используется последовательно или если существует чётко определённый процесс выпуска, исключающий нежелательные обновления.

Версии ядра OpenTofu и провайдеров​

  • В повторно используемых модулях следует задавать только минимально допустимые версии OpenTofu и провайдеров, например >= 0.12.0. Это помогает избежать известных несовместимостей и при этом позволяет пользователям модуля переходить на более новые версии OpenTofu, не изменяя модуль.

  • В корневых модулях следует использовать ограничение ~>, чтобы задать нижнюю и верхнюю границы версий для каждого используемого провайдера.

Поддержка версий OpenTofu и Terraform​

  • Если конфигурация должна поддерживаться и OpenTofu, и Terraform, например в модулях, предназначенных для использования в обоих движках, используйте файл providers.tofu, чтобы задать ограничение версии OpenTofu, переопределяющее ограничение, указанное в providers.tf. Подробнее о приоритете расширений.

Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/expressions/version-constraints/

Spec-Zone.ru

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