Настройки OpenTofu
Специальный тип блока конфигурации terraform используется для настройки некоторых аспектов работы самого OpenTofu, например для требования минимальной версии OpenTofu, необходимой для применения конфигурации.
В рамках обещаний совместимости OpenTofu v1.x блок terraform остается без изменений. В будущем может появиться блок tofu, но пока его не существует.
Синтаксис блока terraform OpenTofu
Настройки OpenTofu объединяются в блоки terraform:
terraform {
# ...
}Каждый блок terraform может содержать несколько настроек, определяющих поведение OpenTofu. Внутри блока terraform можно использовать только постоянные значения; аргументы не могут ссылаться на именованные объекты, такие как ресурсы, входные переменные и т. д., и не могут использовать встроенные функции языка OpenTofu.
Различные параметры, поддерживаемые в блоке terraform, описаны в следующих разделах.
Настройка бэкенда OpenTofu
Вложенный блок backend задает, какой бэкенд состояния должен использовать OpenTofu.
Синтаксис и поведение блока backend описаны в разделе Настройка бэкенда.
Указание обязательной версии OpenTofu
Параметр required_version принимает строку ограничения версии, которая указывает, какие версии OpenTofu можно использовать с вашей конфигурацией.
Если запущенная версия OpenTofu не соответствует заданным ограничениям, OpenTofu выдаст ошибку и завершит работу, не выполняя никаких дальнейших действий.
При использовании дочерних модулей каждый модуль может указывать собственные требования к версии. Должны выполняться требования всех модулей в дереве.
Используйте ограничения версий OpenTofu в совместной среде, чтобы обеспечить работу всех пользователей с определенной версией OpenTofu или как минимум с такой версией, которая поддерживает поведение, ожидаемое конфигурацией.
Параметр required_version применяется только к версии интерфейса командной строки OpenTofu. Типы ресурсов OpenTofu реализованы плагинами провайдеров, циклы выпуска которых не зависят ни от интерфейса командной строки OpenTofu, ни друг от друга. Используйте блок 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.10/language/settings/