Настройки 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. Типы ресурсов 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.9/language/settings/