Перейти к основному содержанию
Сервисы ClickHouse Managed Postgres можно создавать и управлять ими с помощью ресурса clickhouse_postgres_service в Terraform-провайдере ClickHouse. На этой странице описаны настройка провайдера и примеры конфигурации для этого ресурса и связанных с ним источников данных.
Этот ресурс находится на стадии альфа, и его поведение может измениться в будущих версиях провайдера. Он входит в стандартную сборку провайдера и доступен начиная с версии v3.17.1 — подробности см. в релизах провайдера.

Настройка провайдера

Добавьте провайдер ClickHouse в конфигурацию Terraform:
terraform {
  required_providers {
    clickhouse = {
      source  = "ClickHouse/clickhouse"
      version = ">= 3.17.1"
    }
  }
}

provider "clickhouse" {
  organization_id = var.organization_id
  token_key       = var.token_key
  token_secret    = var.token_secret
}
См. Управление ключами API, чтобы узнать, как создать ключ API для работы с провайдером.

Обзор ресурса

Ресурс clickhouse_postgres_service поддерживает следующие аргументы:
АргументОбязательныйОписание
nameДаПонятное человеку имя сервиса. Неизменяемо — при изменении сервис удаляется и создаётся заново.
cloud_providerТолько при обычном созданииОблачный провайдер, в котором размещён экземпляр. Сейчас поддерживается только aws. Не указывайте для реплики для чтения или восстановления на определённый момент времени (значение наследуется от источника).
regionТолько при обычном созданииОблачный регион (например, us-east-1). Не указывайте для реплики для чтения или восстановления на определённый момент времени (значение наследуется от источника).
sizeТолько при обычном созданииРазмер экземпляра (VM SKU), например m6gd.large. Можно изменять без пересоздания. Не указывайте для восстановления на определённый момент времени (восстановленный экземпляр будет создан с размером из резервной копии).
postgres_versionНетОсновная версия Postgres (например, 18). Изменение основной версии приводит к удалению и повторному созданию сервиса.
ha_typeНетРежим высокой доступности: none, async или sync. См. Высокая доступность.
passwordНетПароль суперпользователя. Не указывайте его, если хотите, чтобы сервер сгенерировал пароль автоматически. Хранится в state как чувствительные данные.
pg_configНетПараметры сервера Postgres в виде map ключ-значение.
pgbouncer_configНетПараметры пулера соединений PgBouncer в виде map ключ-значение.
tagsНетТеги ресурса в виде map ключ-значение.
read_replica_ofНетID основного сервиса, от которого нужно реплицировать данные. См. Реплики для чтения. Взаимоисключаемо с restore_to_point_in_time.
restore_to_point_in_timeНетСоздаёт сервис путём восстановления другого сервиса на определённый момент времени. См. Восстановление на определённый момент времени. Взаимоисключаемо с read_replica_of.
Следующие атрибуты доступны только для чтения и заполняются ClickHouse Cloud после создания: id, state, created_at, is_primary, hostname, port, username и connection_string (чувствительные данные).
Значение password хранится в Terraform state в открытом виде. Поэтому state-файл нужно надёжно защитить — например, использовать удалённый backend с шифрованием при хранении. Если password не указан, сервер сгенерирует его, а провайдер будет заново считывать его в state при каждом обновлении.

Создайте сервис

resource "clickhouse_postgres_service" "example" {
  name           = "my-postgres"
  cloud_provider = "aws"
  region         = "us-east-1"
  size           = "m6gd.large"

  # High-availability mode — number of standby replicas:
  #   "none"  – primary only, no standby (default)
  #   "async" – 1 standby, asynchronous replication
  #   "sync"  – 2 standbys, synchronous replication
  ha_type = "async"

  tags = {
    environment = "production"
    team        = "data"
  }
}
Чтобы задать пароль самостоятельно, укажите password — он должен содержать не менее 12 символов, включая как минимум одну строчную букву, одну заглавную букву и одну цифру. Если не указывать этот параметр, сервер сгенерирует пароль автоматически.

Высокая доступность

Аргумент ha_type определяет количество резервных реплик:
ha_typeРезервные репликиРепликация
noneнет (только основной)
async1 резервная репликаАсинхронная — запись завершается без ожидания резервной реплики
sync2 резервные репликиСинхронная — основной ожидает подтверждения как минимум от одной резервной реплики
ha_type можно изменять после создания; его изменение вызывает переход HA. Подробности см. в разделе Высокая доступность.

Реплики для чтения

Задайте read_replica_of равным id основного сервиса, чтобы создать стриминговую реплику для чтения. Реплика наследует cloud_provider, region, postgres_version и superuser основного сервиса — не указывайте эти параметры (и password):
resource "clickhouse_postgres_service" "replica" {
  name            = "my-postgres-replica"
  size            = "m6gd.large"
  read_replica_of = clickhouse_postgres_service.example.id
}
Подробнее см. в разделе реплики для чтения.

Восстановление на определённый момент времени

Задайте restore_to_point_in_time, чтобы создать сервис, восстановив резервную копию другого сервиса на указанный момент времени. Параметры cloud_provider, region и postgres_version наследуются от исходного сервиса, поэтому их указывать не нужно; size и ha_type также следует опустить:
resource "clickhouse_postgres_service" "restored" {
  name = "my-postgres-restored"

  restore_to_point_in_time = {
    source_id      = clickhouse_postgres_service.example.id
    restore_target = "2026-06-01T12:00:00Z"
  }
}
Весь этот блок используется только на этапе создания: изменение source_id или restore_target, а также удаление блока приводят к удалению и повторному созданию сервиса. Подробности см. в разделе Резервное копирование и восстановление.

Источники данных

Три дополнительных источника данных позволяют найти существующие сервисы:
# A single service by ID.
data "clickhouse_postgres_service" "example" {
  id = clickhouse_postgres_service.example.id
}

# All Managed Postgres services in the organization.
data "clickhouse_postgres_services" "all" {}

# The CA certificates for a service, for TLS connections.
data "clickhouse_postgres_service_ca_certificates" "certs" {
  service_id = clickhouse_postgres_service.example.id
}

Импорт существующих сервисов

Существующие сервисы Managed Postgres можно импортировать в состояние Terraform по идентификатору сервиса. Пароль восстанавливается при импорте — сервер возвращает его в ответ на GET-запрос:
terraform import clickhouse_postgres_service.example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Неподдерживаемые операции

Следующее намеренно не включено в схему ресурса:
  • Операционные команды (restart, promote, switchover).
  • Списки разрешённых IP-адресов, частные конечные точки, конфигурация резервного копирования, окна обслуживания, управляемые клиентом ключи шифрования и BYOC.
  • Настраиваемые тайм-ауты жизненного цикла — блока timeouts {} нет.
Последнее изменение 11 июня 2026 г.