Тип бэкенда: удаленный
Большинство доступных бэкендов предоставляют различные способы удаленного хранения снимков состояния. Поэтому их часто называют бэкендами удаленного состояния. На этой странице описан специальный бэкенд remote, который не следует путать с более простыми бэкендами удаленного состояния.
Рекомендуем использовать встроенную интеграцию cloud вместо бэкенда remote. Вариант cloud отличается улучшенным пользовательским интерфейсом и предоставляет больше возможностей.
Удаленный бэкенд уникален среди всех остальных бэкендов OpenTofu: он может как хранить снимки состояния, так и выполнять операции рабочего процесса запуска, управляемого через CLI, для бэкендов программного обеспечения для автоматизации и совместной работы TF (TACOS). Ранее он назывался «расширенным» бэкендом.
Если ваш поставщик TACOS поддерживает полноценные удаленные операции, вы можете выполнять такие команды, как tofu plan или tofu apply, в среде выполнения TACOS, при этом вывод журнала будет поступать непосредственно в локальный терминал. Для удаленного планирования и применения используются значения переменных из соответствующего удаленного рабочего пространства.
Вы также можете использовать TACOS с локальными операциями, при которых в удаленном бэкенде TACOS хранится только состояние.
Поддержка команд
Реализация функций может различаться в разных TACOS.
Удаленный бэкенд поддерживает следующие команды OpenTofu:
applyconsoledestroyfmtgetgraphimportinitoutputplanprovidersshow-
state(поддерживаются все подкоманды: list, mv, pull, push, rm, show) taintuntaintvalidateversionworkspace
Рабочие пространства
Удаленный бэкенд может работать как с одним удаленным рабочим пространством, так и с несколькими удаленными рабочими пространствами с похожими именами (например, 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.12/language/settings/backends/remote/