Настройки OpenTofu
Специальный тип блока конфигурации terraform используется для настройки некоторых аспектов работы самого OpenTofu, например для требования минимальной версии OpenTofu, необходимой для применения конфигурации.
В рамках обещаний совместимости OpenTofu v1.x блок terraform остаётся без изменений. В будущем может быть введён блок tofu, но пока его не существует.
Синтаксис блока OpenTofu terraform
Настройки OpenTofu собраны в блоках terraform:
terraform {
# ...
}Каждый блок terraform может содержать ряд настроек, связанных с поведением OpenTofu. Внутри блока terraform можно использовать только константные значения; аргументы не могут ссылаться на именованные объекты, такие как ресурсы, входные переменные и т. д., и не могут использовать встроенные функции языка OpenTofu.
Различные параметры, поддерживаемые в блоке terraform, описаны в следующих разделах.
Настройка бэкенда OpenTofu
Вложенный блок backend задаёт, какой бэкенд состояния должен использовать OpenTofu.
Синтаксис и поведение блока backend описаны в разделе Настройка бэкенда.
Указание обязательной версии OpenTofu
Параметр required_version принимает строку ограничения версии, которая задаёт версии OpenTofu, совместимые с вашей конфигурацией.
Если запущенная версия OpenTofu не соответствует указанным ограничениям, OpenTofu выдаст ошибку и завершит работу, не выполняя дальнейших действий.
При использовании дочерних модулей каждый модуль может задавать собственные требования к версии. Требования всех модулей в дереве должны быть выполнены.
Используйте ограничения версий OpenTofu в совместной среде, чтобы все работали с определённой версией OpenTofu или как минимум с версией, в которой реализовано поведение, ожидаемое конфигурацией.
Параметр required_version применяется только к версии OpenTofu CLI. Типы ресурсов OpenTofu реализуются плагинами провайдеров, циклы выпуска которых не зависят ни от OpenTofu CLI, ни друг от друга. Используйте блок required_providers, чтобы управлять требуемыми версиями каждого используемого провайдера.
Указание требований к провайдерам
Блок required_providers указывает все провайдеры, необходимые текущему модулю, сопоставляя каждому локальному имени провайдера адрес источника и ограничение версии.
terraform {
required_providers {
aws = {
version = ">= 2.7.0"
source = "hashicorp/aws"
}
}
}Подробнее см. в разделе Требования к провайдерам.
Экспериментальные возможности языка
Команда OpenTofu иногда впервые представляет новые возможности языка в виде экспериментальных функций, включаемых по желанию. Это позволяет сообществу опробовать новую функцию и оставить отзыв до того, как она станет обязательным условием обратной совместимости.
В версиях, где доступны экспериментальные функции, их можно включить отдельно для каждого модуля, задав аргумент experiments внутри блока tofu:
terraform {
experiments = [example]
}Этот пример включает эксперимент с именем example, если такой эксперимент доступен в текущей версии OpenTofu.
В последующих версиях эксперименты могут произвольно изменяться и, в зависимости от их результатов, могут претерпеть существенные изменения перед выпуском или вообще не выйти в стабильной форме. Такие несовместимые изменения могут появляться даже в минорных и исправительных версиях. Мы не рекомендуем использовать экспериментальные функции в модулях OpenTofu, предназначенных для производственной среды.
Чтобы явно указать на это и не допустить, чтобы пользователи модуля случайно стали зависеть от экспериментальной функции, при каждом выполнении tofu plan или tofu apply любой модуль с включёнными экспериментами выдаёт предупреждение. Если вы хотите попробовать экспериментальные функции в общем модуле, рекомендуем включать эксперимент только в альфа- или бета-версиях модуля.
О начале и завершении экспериментов сообщается в журнале изменений OpenTofu. Следите за примечаниями к выпускам, чтобы узнать, какие ключевые слова экспериментов доступны в той или иной версии OpenTofu.
Передача метаданных провайдерам
Для каждого используемого модулем провайдера в блоке terraform можно указать вложенный блок provider_meta, если провайдер определяет для него схему. Это позволяет передавать провайдеру информацию, специфичную для модуля, и предназначено в первую очередь для модулей, распространяемых тем же поставщиком, что и соответствующий провайдер.
Подробнее см. в разделе Метаданные провайдера.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.11/language/settings/