Spec-Zone.ru › OpenTofu 1.11

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

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

Spec-Zone.ru

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