Тип бэкенда: remote
Большинство доступных бэкендов предоставляют различные способы удалённого хранения снимков состояния. Поэтому их часто называют бэкендами удалённого состояния. На этой странице описан специальный бэкенд remote, который не следует путать с более простыми бэкендами удалённого состояния.
Рекомендуем использовать встроенную интеграцию cloud вместо бэкенда remote. Вариант cloud обеспечивает более удобную работу и предоставляет больше возможностей.
Бэкенд remote отличается от всех остальных бэкендов OpenTofu тем, что он может как хранить снимки состояния, так и выполнять операции рабочего процесса запуска, управляемого CLI, для бэкендов программного обеспечения автоматизации и совместной работы с TF (TACOS). Ранее он назывался «расширенным» бэкендом.
Если ваш поставщик TACOS поддерживает полноценные удалённые операции, вы можете выполнять такие команды, как tofu plan или tofu apply, в среде выполнения TACOS, а журналы будут передаваться непосредственно в локальный терминал. В удалённых планах и операциях применения используются значения переменных из связанного удалённого рабочего пространства.
Вы также можете использовать TACOS для локальных операций, при которых в удалённом бэкенде TACOS хранится только состояние.
Поддержка команд
Реализация функций может различаться в разных TACOS.
Бэкенд remote поддерживает следующие команды OpenTofu:
applyconsoledestroyfmtgetgraphimportinitoutputplanprovidersshow-
state(поддерживаются все подкоманды: list, mv, pull, push, rm, show) taintuntaintvalidateversionworkspace
Рабочие пространства
Бэкенд remote может работать с одним удалённым рабочим пространством или с несколькими удалёнными рабочими пространствами с похожими именами (например, networking-dev и networking-prod). Блок workspaces в конфигурации бэкенда определяет используемый режим:
-
Чтобы использовать одно удалённое рабочее пространство, задайте для
workspaces.nameполное имя удалённого рабочего пространства (например,networking-prod). -
Чтобы использовать несколько удалённых рабочих пространств, задайте для
workspaces.prefixпрефикс, используемый во всех именах нужных удалённых рабочих пространств. Например, задайтеprefix = "networking-", чтобы использовать удалённые рабочие пространства с именамиnetworking-devиnetworking-prod. Это удобно, если требуется сопоставить несколько рабочих пространств OpenTofu CLI, используемых в одной конфигурации OpenTofu, нескольким удалённым рабочим пространствам.
В конфигурации бэкенда необходимо указать либо name, либо prefix. Если не указать ни один из этих параметров или указать оба, возникнет ошибка конфигурации.
Если при выполнении tofu init существует предыдущее состояние, а соответствующие удалённые рабочие пространства пусты или отсутствуют, OpenTofu создаст рабочие пространства и соответствующим образом обновит удалённое состояние. Однако если для удалённых операций вашему рабочему пространству требуются переменные или определённая версия OpenTofu, рекомендуем создать удалённые рабочие пространства в TACOS до выполнения каких-либо удалённых операций с ними.
Имена рабочих пространств
Для взаимодействия с рабочими пространствами в командной строке OpenTofu использует сокращённые имена без общего префикса. Например, если prefix = "networking-", используйте tofu workspace select prod, чтобы переключиться на рабочее пространство OpenTofu CLI prod в текущей конфигурации. Однако удалённые операции OpenTofu, такие как plan и apply, для этого рабочего пространства OpenTofu CLI будут выполняться в удалённом рабочем пространстве networking-prod.
Поэтому интерполяционное выражение terraform.workspace возвращает разные результаты в зависимости от того, настроено ли удалённое рабочее пространство для локального или удалённого выполнения операций. Например, в удалённом рабочем пространстве с именем networking-prod, созданном с помощью prefix = "networking-", выражение возвращает следующие значения:
- Для локальных операций:
terraform.workspace=prod - Для удалённых операций:
terraform.workspace=networking-prod
Примеры конфигураций
Рекомендуем не указывать токен в конфигурации, а вместо этого использовать tofu login или вручную настроить credentials в файле конфигурации CLI.
Базовая конфигурация
# Using a single workspace:
terraform {
backend "remote" {
hostname = "app.example.io"
organization = "company"
workspaces {
name = "my-app-prod"
}
}
}
# Using multiple workspaces:
terraform {
backend "remote" {
hostname = "app.example.io"
organization = "company"
workspaces {
prefix = "my-app-"
}
}
}Использование ввода CLI
# main.tf
terraform {
required_version = "~> 0.12.0"
backend "remote" {}
}Файл конфигурации бэкенда:
# config.remote.tfbackend
workspaces { name = "workspace" }
hostname = "app.example.io"
organization = "company"Запуск tofu init с файлом бэкенда:
tofu init -backend-config=config.remote.tfbackend
Конфигурация источника данных
data "terraform_remote_state" "foo" {
backend = "remote"
config = {
organization = "company"
workspaces = {
name = "workspace"
}
}
}Переменные конфигурации
Рекомендуем передавать учётные данные и другие конфиденциальные сведения с помощью переменных среды. Если вы используете -backend-config или указываете эти значения непосредственно в конфигурации, OpenTofu включит их как в подкаталог .terraform, так и в файлы плана. Подробнее см. в разделе Учётные данные и конфиденциальные данные.
Поддерживаются следующие параметры конфигурации:
-
hostname— (обязательный) имя узла удалённого бэкенда, к которому нужно подключиться. -
organization— (обязательный) имя организации, содержащей целевые рабочие пространства. -
token— (необязательный) токен для аутентификации в удалённом бэкенде. Рекомендуем не указывать токен в конфигурации, а вместо этого использоватьtofu loginили вручную настроитьcredentialsв файле конфигурации CLI. -
workspaces— (обязательный) блок, задающий удалённые рабочие пространства, которые следует использовать. Блокworkspacesподдерживает следующие ключи:-
name— (необязательный) полное имя одного удалённого рабочего пространства. Если этот параметр задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим сprefix. -
prefix— (необязательный) префикс, используемый в именах одного или нескольких удалённых рабочих пространств, которые можно использовать с этой конфигурацией. В TACOS используются полные имена рабочих пространств, а в командной строке для рабочих пространств OpenTofu CLI — сокращённые имена (без префикса). Если параметр не задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим сname.
-
При настройке источника данных terraform_remote_state, который получает состояние из другого удалённого рабочего пространства, необходимо использовать ключ name. Ключ prefix предназначен только для настройки экземпляра удалённого бэкенда.
Аргументы командной строки
В конфигурациях, содержащих блок backend "remote", команды, которые вносят локальные изменения в состояние OpenTofu, а затем отправляют их в удалённое рабочее пространство, принимают следующий параметр, позволяющий изменить такое поведение:
-
-ignore-remote-version— отменяет проверку совпадения локальной и удалённой версий OpenTofu, позволяя выполнить операцию даже при их несовпадении.Обычно для операций изменения состояния требуется локальная версия OpenTofu CLI, совместимая с версией OpenTofu, выбранной в настройках удалённого рабочего пространства. Это необходимо, чтобы локальная операция не создала новый снимок состояния, который среда удалённого выполнения рабочего пространства не сможет декодировать.
Отмена этой проверки может привести к тому, что удалённое рабочее пространство больше не сможет выполнять удалённые операции, поэтому мы не рекомендуем использовать этот параметр.
Исключение файлов из загрузки с помощью .terraformignore
При удалённом выполнении plan или apply в запуске, управляемом CLI, архив каталога конфигурации загружается в TACOS. Чтобы задать пути, которые нужно исключить из загрузки, создайте файл .terraformignore в корневом каталоге конфигурации. Если такого файла нет, по умолчанию из архива исключаются:
-
каталоги
.git/ -
каталоги
.terraform/(за исключением.terraform/modules)
Файл .terraformignore может содержать правила, аналогичные правилам в файле .gitignore
- Комментарии (начинающиеся с
#) и пустые строки игнорируются - Чтобы указать каталог, завершите шаблон косой чертой
/ - Чтобы отменить действие шаблона, поставьте в его начале восклицательный знак
!
Обратите внимание: в отличие от .gitignore, учитывается только файл .terraformignore в корневом каталоге конфигурации.
Copyright (c) The OpenTofu Authors
Copyright (c) 2014 HashiCorp, Inc.
Mozilla Public License, version 2.0
https://opentofu.org/docs/v1.9/language/settings/backends/remote/