Spec-Zone.ru › OpenTofu 1.9

Тип бэкенда: remote

Большинство доступных бэкендов предоставляют различные способы удалённого хранения снимков состояния. Поэтому их часто называют бэкендами удалённого состояния. На этой странице описан специальный бэкенд remote, который не следует путать с более простыми бэкендами удалённого состояния.

Примечание

Рекомендуем использовать встроенную интеграцию cloud вместо бэкенда remote. Вариант cloud обеспечивает более удобную работу и предоставляет больше возможностей.

Бэкенд remote отличается от всех остальных бэкендов OpenTofu тем, что он может как хранить снимки состояния, так и выполнять операции рабочего процесса запуска, управляемого CLI, для бэкендов программного обеспечения автоматизации и совместной работы с TF (TACOS). Ранее он назывался «расширенным» бэкендом.

Если ваш поставщик TACOS поддерживает полноценные удалённые операции, вы можете выполнять такие команды, как tofu plan или tofu apply, в среде выполнения TACOS, а журналы будут передаваться непосредственно в локальный терминал. В удалённых планах и операциях применения используются значения переменных из связанного удалённого рабочего пространства.

Вы также можете использовать TACOS для локальных операций, при которых в удалённом бэкенде TACOS хранится только состояние.

Поддержка команд​

Примечание

Реализация функций может различаться в разных TACOS.

Бэкенд remote поддерживает следующие команды OpenTofu:

  • apply
  • console
  • destroy
  • fmt
  • get
  • graph
  • import
  • init
  • output
  • plan
  • providers
  • show
  • state (поддерживаются все подкоманды: list, mv, pull, push, rm, show)
  • taint
  • untaint
  • validate
  • version
  • workspace

Рабочие пространства​

Бэкенд 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/

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API