Passer au contenu principal
Les services ClickHouse Managed Postgres peuvent être créés et gérés à l’aide de la ressource clickhouse_postgres_service du fournisseur Terraform ClickHouse. Cette page présente la configuration du fournisseur ainsi que des exemples de configuration pour cette ressource et les sources de données associées.
Cette ressource est en alpha et son comportement peut évoluer dans les prochaines versions du fournisseur. Elle est incluse dans le build standard du fournisseur et disponible à partir de la version v3.17.1 du fournisseur — consultez les releases du fournisseur pour plus de détails.

Configuration du fournisseur

Ajoutez le fournisseur ClickHouse à votre configuration 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
}
Consultez Gérer les clés API pour savoir comment créer une clé API à utiliser avec le fournisseur.

Aperçu de la ressource

La ressource clickhouse_postgres_service accepte les arguments suivants :
ArgumentRequisDescription
nameOuiNom du service lisible par un humain. Immuable — le modifier détruit et recrée le service.
cloud_providerPour une création standardFournisseur Cloud hébergeant l’instance. Actuellement, seul aws est pris en charge. À omettre pour une réplique de lecture ou une restauration à un instant donné (hérité de la source).
regionPour une création standardRégion Cloud (par exemple, us-east-1). À omettre pour une réplique de lecture ou une restauration à un instant donné (hérité de la source).
sizePour une création standardTaille de l’instance (SKU de VM), par exemple m6gd.large. Redimensionnable sur place. À omettre pour une restauration à un instant donné (l’instance restaurée démarre avec la taille de la sauvegarde).
postgres_versionNonVersion majeure de Postgres (par exemple, 18). Modifier la version majeure détruit et recrée le service.
ha_typeNonMode de haute disponibilité : none, async ou sync. Voir Haute disponibilité.
passwordNonMot de passe du superutilisateur. Omettez-le pour que le serveur en génère un. Stocké dans l’état (sensible).
pg_configNonParamètres du serveur Postgres sous forme de mappage clé-valeur.
pgbouncer_configNonParamètres du pooler de connexions PgBouncer sous forme de mappage clé-valeur.
tagsNonTags de la ressource sous forme de mappage clé-valeur.
read_replica_ofNonID d’un service principal à répliquer. Voir Répliques de lecture. Mutuellement exclusif avec restore_to_point_in_time.
restore_to_point_in_timeNonCrée le service en restaurant un autre service à un instant donné. Voir Restauration à un instant donné. Mutuellement exclusif avec read_replica_of.
Les attributs suivants sont en lecture seule et sont renseignés par ClickHouse Cloud après la création : id, state, created_at, is_primary, hostname, port, username et connection_string (sensible).
Le password est stocké en texte brut dans votre état Terraform. Protégez votre fichier d’état en conséquence — par exemple, utilisez un backend distant avec chiffrement au repos. Si vous omettez password, le serveur en génère un et le fournisseur le relit dans l’état à chaque actualisation.

Créer un service

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"
  }
}
Pour gérer vous-même le mot de passe, définissez password — il doit contenir au moins 12 caractères, dont au moins une lettre minuscule, une lettre majuscule et un chiffre. Si vous l’omettez, le serveur en génère un.

Haute disponibilité

L’argument ha_type détermine le nombre de répliques de secours :
ha_typeInstances de secoursRéplication
noneAucune (primaire uniquement)
async1 instance de secoursAsynchrone — les écritures sont validées sans attendre l’instance de secours
sync2 instances de secoursSynchrone — l’instance primaire attend un accusé de réception d’au moins une instance de secours
ha_type peut être modifié après la création ; le changer déclenche une transition de haute disponibilité. Voir Haute disponibilité pour plus de détails.

Répliques de lecture

Définissez read_replica_of sur l’id d’un service principal pour créer une réplique de lecture en streaming. Une réplique hérite du cloud_provider, de la région, de la postgres_version et du superutilisateur du principal — ne les indiquez donc pas (ni le password) :
resource "clickhouse_postgres_service" "replica" {
  name            = "my-postgres-replica"
  size            = "m6gd.large"
  read_replica_of = clickhouse_postgres_service.example.id
}
Consultez les répliques en lecture pour en savoir plus.

Restauration à un instant donné

Définissez restore_to_point_in_time pour créer un service en restaurant la sauvegarde d’un autre service à un instant donné. cloud_provider, region et postgres_version sont hérités du service source (ne les indiquez pas) ; size et ha_type doivent être omis :
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"
  }
}
L’ensemble du bloc s’applique uniquement à la création : modifier source_id ou restore_target, ou supprimer le bloc, détruit puis recrée le service. Consultez Sauvegarde et restauration pour plus de détails.

Sources de données

Trois sources de données associées vous permettent de retrouver des services existants :
# 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
}

Importation de services existants

Les services Managed Postgres existants peuvent être importés dans l’état Terraform à l’aide de l’ID du service. Le mot de passe est restauré lors de l’importation — le serveur le renvoie via GET :
terraform import clickhouse_postgres_service.example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx

Opérations non prises en charge

Les éléments suivants sont volontairement absents du schéma de ressource :
  • Commandes opérationnelles (restart, promote, switchover).
  • Listes d’autorisation d’IP, points de terminaison privés, configuration des sauvegardes, fenêtres de maintenance, clés de chiffrement gérées par le client et BYOC.
  • Délais d’expiration du cycle de vie configurables — il n’existe pas de bloc timeouts {}.
Dernière modification le 29 juin 2026