Тип бэкенда: удаленный
Большинство доступных бэкендов предоставляют различные способы удаленного хранения снимков состояния. Поэтому их часто называют бэкендами удаленного состояния. На этой странице описан специальный бэкенд 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.11/language/settings/backends/remote/