Os serviços do ClickHouse Managed Postgres podem ser criados e gerenciados usando o recurso clickhouse_postgres_service no provider Terraform do ClickHouse. Esta página aborda a configuração do provider e traz exemplos de configuração para o recurso e suas fontes de dados correspondentes.
Configuração do provider
Adicione o provider ClickHouse na sua configuração do Terraform:
terraform {
required_providers {
clickhouse = {
source = "ClickHouse/clickhouse"
version = ">= 3.21.0"
}
}
}
provider "clickhouse" {
organization_id = var.organization_id
token_key = var.token_key
token_secret = var.token_secret
}Consulte Como gerenciar chaves de API para ver instruções sobre como criar uma chave de API para usar com o provider.
Visão geral do recurso
O recurso clickhouse_postgres_service tem os seguintes argumentos:
| Argumento | Obrigatório | Descrição |
|---|---|---|
name |
Sim | Nome legível por humanos para o serviço. Imutável — alterá-lo destrói e recria o serviço. |
cloud_provider |
Para uma criação padrão | Provedor de Cloud que hospeda a instância. No momento, apenas aws é compatível. Omita para uma réplica de leitura ou restauração para um ponto no tempo (herdado do recurso de origem). |
region |
Para uma criação padrão | Região da Cloud (por exemplo, us-east-1). Omita para uma réplica de leitura ou restauração para um ponto no tempo (herdado do recurso de origem). |
size |
Para uma criação padrão | Tamanho da instância (SKU da VM), por exemplo m6gd.large. Pode ser redimensionada no local. Omita para uma restauração para um ponto no tempo (a instância restaurada será criada com o tamanho do backup). |
postgres_version |
Não | Versão principal do Postgres (por exemplo, 18). Alterar a versão principal destrói e recria o serviço. |
ha_type |
Não | Modo de alta disponibilidade: none, async ou sync. Consulte Alta disponibilidade. |
password |
Para uma criação padrão, a menos que password_wo esteja definido |
Senha do superusuário, gerenciada pela sua configuração. O Terraform nunca a lê de volta da API. Armazenada no estado (sensível). Omita para uma réplica de leitura (herdada) ou uma restauração para um ponto no tempo (mantida do backup de origem). |
password_wo |
Para uma criação padrão, a menos que password esteja definido |
Senha de superusuário somente para gravação: aplicada ao serviço, mas nunca armazenada no estado. Requer password_wo_version; requer Terraform 1.11 ou posterior. |
password_wo_version |
Com password_wo |
Número da versão de password_wo. Altere-o para rotacionar para o valor atual de password_wo. |
pg_config |
Não | Parâmetros do servidor Postgres como um mapa de chave-valor. |
pgbouncer_config |
Não | Parâmetros do pooler de conexões PgBouncer como um mapa de chave-valor. |
tags |
Não | Tags do recurso como um mapa de chave-valor. |
read_replica_of |
Não | ID de um serviço primário a ser replicado. Consulte Réplicas de leitura. Mutuamente exclusivo com restore_to_point_in_time. |
restore_to_point_in_time |
Não | Cria o serviço restaurando outro serviço para um ponto no tempo. Consulte Restauração para um ponto no tempo. Mutuamente exclusivo com read_replica_of. |
Os seguintes atributos são somente leitura e são preenchidos pelo ClickHouse Cloud após a criação: id, state, created_at, is_primary, hostname, port e username. Não há atributo connection_string: monte URIs de conexão a partir de hostname, port, username e da senha que você declarar, por exemplo postgres://${username}:${password}@${hostname}:${port}/postgres?sslmode=require.
Criar um serviço
resource "clickhouse_postgres_service" "example" {
name = "my-postgres"
cloud_provider = "aws"
region = "us-east-1"
size = "m6gd.large"
password = var.postgres_password
# 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"
}
}Um serviço padrão deve declarar password ou password_wo. O valor deve ter pelo menos 12 caracteres, incluindo ao menos uma letra minúscula, uma letra maiúscula e um dígito. password_wo (com password_wo_version) aplica as mesmas regras de senha, mas nunca é armazenado no estado; altere password_wo_version para rotacionar a senha. Como a API não retorna credenciais, o Terraform deve continuar sendo o único a gravar a senha: uma senha rotacionada fora do Terraform (Console ou API) não é detectada, e a próxima rotação acionada pelo Terraform reaplica o valor declarado.
Alta disponibilidade
O argumento ha_type controla o número de réplicas em standby:
ha_type |
Standbys | Replicação |
|---|---|---|
none |
Nenhuma (somente a primária) | — |
async |
1 standby | Assíncrona — o commit das gravações ocorre sem esperar pela standby |
sync |
2 standbys | Síncrona — a primária aguarda a confirmação de pelo menos uma standby |
ha_type pode ser alterado após a criação; mudá-lo aciona uma transição de HA. Consulte Alta disponibilidade para mais detalhes.
Réplicas de leitura
Defina read_replica_of como o id de um serviço primário para criar uma réplica de leitura via streaming. A réplica herda cloud_provider, region, postgres_version e o superusuário do primário — omita esses campos (e password):
resource "clickhouse_postgres_service" "replica" {
name = "my-postgres-replica"
size = "m6gd.large"
read_replica_of = clickhouse_postgres_service.example.id
}Consulte réplicas de leitura para obter mais detalhes.
Restauração para um ponto no tempo
Defina restore_to_point_in_time para criar um serviço restaurando o backup de outro serviço para um ponto específico no tempo. cloud_provider, region e postgres_version são herdados do serviço de origem (omita-os); size e ha_type devem ser omitidos:
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"
}
}O bloco inteiro só pode ser usado na criação: alterar source_id ou restore_target, ou remover o bloco, destrói e recria o serviço. Consulte Backup e restauração para mais detalhes.
Fontes de dados
Três fontes de dados complementares permitem consultar serviços existentes:
# A single service by ID.
data "clickhouse_postgres_service" "example" {
id = clickhouse_postgres_service.example.id
}
# All ClickHouse 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
}Importando serviços existentes
Os serviços ClickHouse Managed Postgres existentes podem ser importados para o estado do Terraform usando o ID do serviço:
terraform import clickhouse_postgres_service.example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxA importação não recupera a senha (a API não a retorna). Após a importação, o primeiro apply faz a rotação do serviço para a password ou password_wo definidos na sua configuração.
Operações não suportadas
Os itens a seguir estão intencionalmente ausentes do schema do recurso:
- Comandos operacionais (restart, promote, switchover).
- Listas de IPs permitidos, endpoints privados, configuração de backup, janelas de manutenção, chaves de criptografia gerenciadas pelo cliente e BYOC.
- Timeouts de ciclo de vida configuráveis — não há bloco
timeouts {}.