Тип backend: remote
Большинство доступных backend предоставляют различные способы удалённого хранения снимков состояния. Поэтому их часто называют backend для удалённого состояния. На этой странице описан специальный backend remote, который не следует путать с более простыми backend для удалённого состояния.
Мы рекомендуем использовать встроенную интеграцию cloud вместо backend remote. Вариант cloud обеспечивает более удобную работу и больше возможностей.
Backend remote уникален среди всех остальных backend OpenTofu, поскольку может как хранить снимки состояния, так и выполнять операции рабочего процесса запуска, инициируемые через CLI, для backend средств автоматизации и совместной работы над TF (TACOS). Ранее он назывался «улучшенным» backend.
Если ваш провайдер TACOS поддерживает полностью удалённые операции, вы можете выполнять такие команды, как tofu plan или tofu apply, в среде выполнения TACOS; вывод журнала при этом будет передаваться непосредственно в локальный терминал. Для удалённых планов и операций применения используются значения переменных из связанного удалённого рабочего пространства.
Вы также можете использовать TACOS для локальных операций, при которых в удалённом backend TACOS хранится только состояние.
Поддержка команд
Реализация функций может различаться в разных TACOS.
Backend remote поддерживает следующие команды OpenTofu:
applyconsoledestroyfmtgetgraphimportinitoutputplanprovidersshow-
state(поддерживаются все подкоманды: list, mv, pull, push, rm, show) taintuntaintvalidateversionworkspace
Рабочие пространства
Backend remote может работать как с одним удалённым рабочим пространством, так и с несколькими удалёнными рабочими пространствами с похожими именами (например, networking-dev и networking-prod). Блок workspaces конфигурации backend определяет, какой режим будет использоваться:
-
Чтобы использовать одно удалённое рабочее пространство, задайте для
workspaces.nameполное имя удалённого рабочего пространства (например,networking-prod). -
Чтобы использовать несколько удалённых рабочих пространств, задайте для
workspaces.prefixпрефикс, используемый во всех именах нужных удалённых рабочих пространств. Например, задайтеprefix = "networking-", чтобы использовать удалённые рабочие пространства с такими именами, какnetworking-devиnetworking-prod. Это полезно, если нужно сопоставить несколько рабочих пространств OpenTofu CLI, используемых в одной конфигурации OpenTofu, нескольким удалённым рабочим пространствам.
В конфигурации backend необходимо указать либо 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" {}
}Файл конфигурации backend:
# config.remote.tfbackend
workspaces { name = "workspace" }
hostname = "app.example.io"
organization = "company"Запуск tofu init с файлом backend:
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— (Обязательно) Имя хоста удалённого backend, к которому нужно подключиться. -
organization— (Обязательно) Имя организации, содержащей целевые рабочие пространства. -
token— (Необязательно) Токен для аутентификации в удалённом backend. Мы рекомендуем не указывать токен в конфигурации, а вместо этого использоватьtofu loginили вручную настроитьcredentialsв файле конфигурации CLI. -
workspaces— (Обязательно) Блок, указывающий, какие удалённые рабочие пространства использовать. Блокworkspacesподдерживает следующие ключи:-
name— (Необязательно) Полное имя одного удалённого рабочего пространства. Если этот параметр задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим сprefix. -
prefix— (Необязательно) Префикс, используемый в именах одного или нескольких удалённых рабочих пространств, которые можно использовать с этой конфигурацией. В TACOS используются полные имена рабочих пространств, а в командной строке для рабочих пространств OpenTofu CLI — сокращённые имена (без префикса). Если параметр не задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим сname.
-
При настройке источника данных terraform_remote_state, который получает состояние из другого удалённого рабочего пространства, необходимо использовать ключ name. Ключ prefix предназначен только для настройки экземпляра удалённого backend.
Аргументы командной строки
Для конфигураций, содержащих блок 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.10/language/settings/backends/remote/