> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# Referencia de Terraform de ClickHouse Managed Postgres

> Referencia para gestionar servicios de ClickHouse Managed Postgres con el proveedor de Terraform de ClickHouse.

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Funcionalidad beta</span>
        </a>;
};

<BetaBadge link="https://clickhouse.com/cloud/postgres" galaxyTrack={true} galaxyEvent="docs.managed-postgres.terraform-beta" />

Los servicios de ClickHouse Managed Postgres se pueden crear y administrar mediante el recurso `clickhouse_postgres_service` del [proveedor de Terraform de ClickHouse](https://registry.terraform.io/providers/ClickHouse/clickhouse/latest/docs/resources/postgres_service). Esta página describe la configuración del proveedor y ofrece ejemplos de configuración para este recurso y sus fuentes de datos asociadas.

<Note>
  Este recurso está en alpha y su comportamiento puede cambiar en futuras versiones del proveedor. Se distribuye en el build habitual del proveedor. Esta página documenta la versión **v3.21.0** del proveedor y posteriores. Consulta las [releases del proveedor](https://github.com/ClickHouse/terraform-provider-clickhouse/releases) para más detalles.
</Note>

<h2 id="provider-setup">
  Configuración del proveedor
</h2>

Añada el proveedor de ClickHouse a su configuración de Terraform:

```hcl theme={null}
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
}
```

Consulta [Gestión de claves de API](/es/products/cloud/features/admin-features/api/openapi) para ver instrucciones sobre cómo crear una clave de API para usarla con el proveedor.

<h2 id="resource-overview">
  Resumen del recurso
</h2>

El recurso `clickhouse_postgres_service` tiene los siguientes argumentos:

| Argumento | Obligatorio | Descripción |
| - | - | - |
| `name` | Sí | Nombre del servicio legible para humanos. Es inmutable: si se cambia, el servicio se destruye y se vuelve a crear. |
| `cloud_provider` | Para una creación estándar | Proveedor de Cloud que aloja la instancia: `aws` o `gcp` ([Private Preview](https://clickhouse.com/cloud/postgres#gcp-waitlist)). Omítalo para una réplica de lectura o una restauración a un momento dado (se hereda del origen). |
| `region` | Para una creación estándar | Región de Cloud (por ejemplo, `us-east-1`). Omítala para una réplica de lectura o una restauración a un momento dado (se hereda del origen). |
| `size` | Para una creación estándar | Tamaño de la instancia (SKU de VM), por ejemplo `m6gd.large`. Se puede redimensionar sin recrearla. Omítalo para una restauración a un momento dado (la instancia restaurada se inicia con el tamaño de la copia de seguridad). |
| `postgres_version` | No | Versión principal de Postgres (por ejemplo, `18`). Cambiar la versión principal destruye y vuelve a crear el servicio. |
| `ha_type` | No | Modo de alta disponibilidad: `none`, `async` o `sync`. Consulte [Alta disponibilidad](#high-availability). |
| `password` | Para una creación estándar, a menos que se establezca `password_wo` | Contraseña del superusuario, gestionada desde su configuración. Terraform nunca la vuelve a leer desde la API. Se almacena en el estado como dato sensible. Omítala para una réplica de lectura (se hereda) o una restauración a un momento dado (se conserva de la copia de seguridad de origen). |
| `password_wo` | Para una creación estándar, a menos que se establezca `password` | Contraseña de superusuario de solo escritura: se aplica al servicio, pero nunca se almacena en el estado. Requiere `password_wo_version`; requiere Terraform 1.11 o posterior. |
| `password_wo_version` | Con `password_wo` | Número de versión para `password_wo`. Cámbielo para rotar al valor actual de `password_wo`. |
| `pg_config` | No | Parámetros del servidor Postgres como un mapa de clave-valor. |
| `pgbouncer_config` | No | Parámetros del agrupador de conexiones PgBouncer como un mapa de clave-valor. |
| `tags` | No | Etiquetas del recurso como un mapa de clave-valor. |
| `read_replica_of` | No | ID de un servicio primario que se va a replicar. Consulte [Réplicas de lectura](#read-replicas). Es mutuamente excluyente con `restore_to_point_in_time`. |
| `restore_to_point_in_time` | No | Crea el servicio restaurando otro servicio a un momento dado. Consulte [Restauración a un momento dado](#point-in-time-restore). Es mutuamente excluyente con `read_replica_of`. |

Los siguientes atributos son de solo lectura y ClickHouse Cloud los completa después de la creación: `id`, `state`, `created_at`, `is_primary`, `hostname`, `port` y `username`. No existe el atributo `connection_string`: construya los URI de conexión a partir de `hostname`, `port`, `username` y la contraseña que declare, por ejemplo `postgres://${username}:${password}@${hostname}:${port}/postgres?sslmode=require`.

<Warning>
  El valor de `password` se almacena en texto sin formato en el estado de Terraform. Proteja su archivo de estado en consecuencia, por ejemplo, con un backend remoto que use cifrado en reposo, o use `password_wo` para mantener la contraseña completamente fuera del estado.
</Warning>

<h2 id="create-a-service">
  Crear un servicio
</h2>

```hcl theme={null}
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"
  }
}
```

Un servicio estándar debe declarar `password` o `password_wo`. El valor debe tener al menos 12 caracteres, con al menos una letra minúscula, una mayúscula y un dígito. `password_wo` (con `password_wo_version`) aplica las mismas reglas de contraseña, pero nunca se almacena en el estado; cambia `password_wo_version` para rotarla. Como la API no devuelve credenciales, Terraform debe seguir siendo el único que establezca la contraseña: una contraseña rotada fuera de Terraform (Console o API) no se detecta, y la siguiente rotación gestionada por Terraform vuelve a aplicar el valor declarado.

<h2 id="high-availability">
  Alta disponibilidad
</h2>

El argumento `ha_type` controla el número de réplicas standby:

| `ha_type` | Standbys | Replicación |
| - | - | - |
| `none` | Ninguna (solo primaria) | — |
| `async` | 1 standby | Asíncrona — el commit de las escrituras se realiza sin esperar a la standby |
| `sync` | 2 standbys | Sincrónica — la primaria espera la confirmación de al menos una standby |

`ha_type` puede modificarse tras su creación; cambiarlo desencadena una transición de HA. Consulta [Alta disponibilidad](/es/products/managed-postgres/high-availability) para obtener más información.

<h2 id="read-replicas">
  Réplicas de lectura
</h2>

Establece `read_replica_of` con el `id` de un servicio primario para crear una réplica de lectura en streaming. Una réplica hereda el `cloud_provider`, la `región`, la `postgres_version` y el superusuario del primario; omítelos (y la `contraseña`):

```hcl theme={null}
resource "clickhouse_postgres_service" "replica" {
  name            = "my-postgres-replica"
  size            = "m6gd.large"
  read_replica_of = clickhouse_postgres_service.example.id
}
```

Consulta [réplicas de lectura](/es/products/managed-postgres/read-replicas) para más información.

<h2 id="point-in-time-restore">
  Restauración a un momento dado
</h2>

Configura `restore_to_point_in_time` para crear un servicio restaurando la copia de seguridad de otro servicio a un momento determinado. `cloud_provider`, `region` y `postgres_version` se heredan del servicio de origen (omítelos); `size` y `ha_type` también deben omitirse:

```hcl theme={null}
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"
  }
}
```

Todo el bloque solo se usa durante la creación: cambiar `source_id` o `restore_target`, o eliminar el bloque, destruye y vuelve a crear el servicio. Consulta [Copia de seguridad y restauración](/es/products/managed-postgres/backup-and-restore) para más detalles.

<h2 id="data-sources">
  Fuentes de datos
</h2>

Tres fuentes de datos complementarias le permiten consultar los servicios existentes:

```hcl theme={null}
# 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
}
```

<h2 id="importing-existing-services">
  Importación de servicios existentes
</h2>

Los servicios existentes de ClickHouse Managed Postgres se pueden importar al estado de Terraform mediante el ID del servicio:

```bash theme={null}
terraform import clickhouse_postgres_service.example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
```

La contraseña no se recupera al importar (la API no la devuelve). Después de importar, el primer `apply` cambia la contraseña del servicio a la `password` o `password_wo` declarada en su configuración.

<h2 id="unsupported-operations">
  Operaciones no admitidas
</h2>

Los siguientes elementos se omiten intencionadamente del esquema del recurso:

* Comandos operativos (restart, promote, switchover).
* Listas de direcciones IP permitidas, endpoints privados, configuración de copias de seguridad, ventanas de mantenimiento, claves de cifrado gestionadas por el cliente y BYOC.
* Tiempos de espera configurables del ciclo de vida: no hay ningún bloque `timeouts {}`.
