Spec-Zone.ru › OpenTofu 1.10

Тип backend: remote

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

Примечание

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

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

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

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

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

Примечание

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

Backend 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

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

Backend remote может работать как с одним удалённым рабочим пространством, так и с несколькими удалёнными рабочими пространствами с похожими именами (например, networking-dev и networking-prod). Блок workspaces конфигурации backend определяет, какой режим будет использоваться:

  • Чтобы использовать одно удалённое рабочее пространство, задайте для workspaces.name полное имя удалённого рабочего пространства (например, networking-prod).

  • Чтобы использовать несколько удалённых рабочих пространств, задайте для workspaces.prefix префикс, используемый во всех именах нужных удалённых рабочих пространств. Например, задайте prefix = "networking-", чтобы использовать удалённые рабочие пространства с такими именами, как networking-dev и networking-prod. Это полезно, если нужно сопоставить несколько рабочих пространств OpenTofu CLI, используемых в одной конфигурации OpenTofu, нескольким удалённым рабочим пространствам.

В конфигурации backend необходимо указать либо 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" {}
}

Файл конфигурации backend:

Блок кода
# config.remote.tfbackend
workspaces { name = "workspace" }
hostname     = "app.example.io"
organization = "company"

Запуск tofu init с файлом backend:

Блок кода
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 — (Обязательно) Имя хоста удалённого backend, к которому нужно подключиться.

  • organization — (Обязательно) Имя организации, содержащей целевые рабочие пространства.

  • token — (Необязательно) Токен для аутентификации в удалённом backend. Мы рекомендуем не указывать токен в конфигурации, а вместо этого использовать tofu login или вручную настроить credentials в файле конфигурации CLI.

  • workspaces — (Обязательно) Блок, указывающий, какие удалённые рабочие пространства использовать. Блок workspaces поддерживает следующие ключи:

    • name — (Необязательно) Полное имя одного удалённого рабочего пространства. Если этот параметр задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим с prefix.
    • prefix — (Необязательно) Префикс, используемый в именах одного или нескольких удалённых рабочих пространств, которые можно использовать с этой конфигурацией. В TACOS используются полные имена рабочих пространств, а в командной строке для рабочих пространств OpenTofu CLI — сокращённые имена (без префикса). Если параметр не задан, можно использовать только рабочее пространство по умолчанию. Этот параметр несовместим с name.
Примечание

При настройке источника данных terraform_remote_state, который получает состояние из другого удалённого рабочего пространства, необходимо использовать ключ name. Ключ prefix предназначен только для настройки экземпляра удалённого backend.

Аргументы командной строки​

Для конфигураций, содержащих блок 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.10/language/settings/backends/remote/

Spec-Zone.ru

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