Spec-Zone.ru › OpenTofu 1.12

Настройки языка и совместимости

Блоки конфигурации типа language можно использовать, чтобы явно указать, с какими версиями OpenTofu должен быть совместим модуль и для какой редакции языка OpenTofu он написан.

OpenTofu также поддерживает некоторые другие настройки, помогающие писать модули, совместимые как с OpenTofu, так и с Terraform. Они описаны далее на этой странице.

Синтаксис блока language​

Настройки, связанные с языком, задаются в блоках language:

Блок кода
language {
  # ...
}

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

Объявление совместимости с реализациями​

Блок compatible_with, вложенный в language, указывает, с каким программным обеспечением должен быть совместим модуль:

Блок кода
language {
  compatible_with {
    opentofu = ">= 1.12"
  }
}

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

Редакции языка и экспериментальные функции​

Тип блока language поддерживает два дополнительных аргумента, которые не имеют практического применения в текущих версиях OpenTofu, но могут получить расширенную функциональность в будущих версиях:

  • edition: задаёт «редакцию языка», для которой написан модуль. В будущей версии OpenTofu она может включать одну или несколько языковых функций, не полностью обратно совместимых с предыдущими версиями OpenTofu.

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

  • experiments: задаёт набор экспериментальных языковых функций, используемых модулем.

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

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

Совместимость с более ранними версиями и другим программным обеспечением​

Тип блока language не поддерживается в OpenTofu версии 1.11 и более ранних, а также не распознаётся ни одной версией Terraform, доступной на момент написания этой документации.

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

Блок кода
terraform {
  required_version = ">= 0.11"
}

Более ранние версии OpenTofu всегда трактовали эту настройку как ограничение версии OpenTofu. Это неудобно при использовании модуля, изначально написанного для Terraform, поскольку в таком модуле эта настройка задаёт ограничение версии Terraform.

Для создания модуля, совместимого с более ранними версиями OpenTofu и Terraform, рекомендуем следующую стратегию:

  • Создайте файл versions.tofu, содержащий аргумент required_version (если важна совместимость с более ранними версиями) либо блок language, указывающий, с какими версиями OpenTofu должен быть совместим модуль.
  • Создайте файл versions.tf, содержащий аргумент required_version, указывающий, с какими версиями Terraform должен быть совместим модуль.

Если присутствуют оба файла — versions.tofu и versions.tf, — OpenTofu проигнорирует файл versions.tf, считая, что он предназначен для Terraform. На момент написания этой документации Terraform не читает файлы .tofu, поэтому Terraform также должен игнорировать versions.tofu.

Другие способы использования блоков terraform​

Эта страница посвящена настройкам совместимости с версиями OpenTofu и редакциям языка, однако блок terraform принимает и ряд других, не связанных с ними настроек, описанных в других разделах:

  • Блоки backend задают конфигурацию серверной части.
  • Блоки cloud задают конфигурацию облака.
  • Блоки required_providers задают требования к провайдерам.
  • Блоки provider_meta настраивают метаданные провайдера.

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

Spec-Zone.ru

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