Spec-Zone.ru › OpenTofu 1.12

Тип бэкенда: удаленный

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

Примечание

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

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

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

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

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

Примечание

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

Удаленный бэкенд поддерживает следующие команды 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

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

Удаленный бэкенд может работать как с одним удаленным рабочим пространством, так и с несколькими удаленными рабочими пространствами с похожими именами (например, 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/

Spec-Zone.ru

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