Spec-Zone.ru › OpenTofu 1.9

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

Хранит состояние в базе данных Postgres версии 10 или новее.

Этот бэкенд поддерживает блокировку состояния.

Пример конфигурации​

Блок кода
terraform {
  backend "pg" {
    conn_str = "postgres://user:pass@db.example.com/tofu_backend"
  }
}

Перед инициализацией бэкенда с помощью tofu init база данных уже должна существовать:

Блок кода
createdb tofu_backend

Эта команда createdb доступна в клиентских приложениях Postgres, которые устанавливаются вместе с сервером базы данных.

Использование переменных среды​

Рекомендуем использовать переменные среды для настройки бэкенда pg, чтобы конфиденциальные учетные данные не записывались на диск и не попадали в систему контроля версий.

Бэкенд pg поддерживает стандартные переменные среды libpq.

Бэкенд можно настроить, указав всю конфигурацию в переменной среды:

Блок кода
terraform {
  backend "pg" {}
}
Блок кода
$ export PG_CONN_STR=postgres://user:pass@db.example.com/tofu_backend
$ tofu init

или только конфиденциальные параметры:

Блок кода
terraform {
  backend "pg" {
    conn_str = "postgres://db.example.com/tofu_backend"
  }
}
Блок кода
$ export PGUSER=user
$ read -s PGPASSWORD
$ export PGPASSWORD
$ tofu init

Настройка источника данных​

Чтобы использовать удаленное состояние pg в другой конфигурации, воспользуйтесь источником данных terraform_remote_state.

Блок кода
data "terraform_remote_state" "network" {
  backend = "pg"
  config = {
    conn_str = "postgres://localhost/tofu_backend"
  }
}

Переменные конфигурации​

Предупреждение

Рекомендуем использовать переменные среды для передачи учетных данных и других конфиденциальных данных. Если использовать -backend-config или указать эти значения непосредственно в конфигурации, OpenTofu включит их и в подкаталог .terraform, и в файлы плана. Подробнее см. в разделе Учетные данные и конфиденциальные данные.

Поддерживаются следующие параметры конфигурации и переменные среды:

  • conn_str — строка подключения Postgres; URL postgres://. Для указания способа подключения к базе данных PostgreSQL также можно использовать PG_CONN_STR и стандартные переменные среды libpq.
  • schema_name — имя автоматически управляемой схемы Postgres; по умолчанию используется terraform_remote_state. Также можно задать с помощью переменной среды PG_SCHEMA_NAME.
  • skip_schema_creation — если задано значение true, схема Postgres должна уже существовать. Также можно задать с помощью переменной среды PG_SKIP_SCHEMA_CREATION. OpenTofu не будет пытаться создать схему. Это полезно, если ее уже создал администратор базы данных.
  • skip_table_creation — если задано значение true, таблица Postgres должна уже существовать. Также можно задать с помощью переменной среды PG_SKIP_TABLE_CREATION. OpenTofu не будет пытаться создать таблицу. Это полезно, если ее уже создал администратор базы данных.
  • skip_index_creation — если задано значение true, индекс Postgres должен уже существовать. Также можно задать с помощью переменной среды PG_SKIP_INDEX_CREATION. OpenTofu не будет пытаться создать индекс. Это полезно, если его уже создал администратор базы данных.

Техническое устройство​

Этот бэкенд создает одну таблицу states в автоматически управляемой схеме Postgres, заданной переменной schema_name.

Ключом таблицы служит имя рабочей области. Если рабочие области не используются, применяется имя default.

Блокировка поддерживается с помощью консультативных блокировок Postgres. Команда force-unlock не поддерживается, поскольку эти встроенные в базу данных блокировки автоматически снимаются при прерывании сеанса или сбое соединения. Чтобы просмотреть незавершенные блокировки на сервере Postgres, используйте системное представление pg_locks.

Таблица states содержит:

  • целое число с автоинкрементом id, используемое в качестве ключа для консультативных блокировок
  • ключ name рабочей области типа text с уникальным индексом
  • состояние OpenTofu data типа text

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/pg/

Spec-Zone.ru

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