ClickHouse Managed Postgres サービスは、ClickHouse Terraform プロバイダーの clickhouse_postgres_service リソースを使用して作成および管理できます。このページでは、このリソースと補助的なデータソースについて、プロバイダーの設定と設定例を説明します。
プロバイダーの設定
ClickHouse プロバイダーを 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
}プロバイダーで使用するための 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 |
通常の作成時 (password_wo が設定されていない場合) |
構成で管理するスーパーユーザーのパスワードです。Terraform が API からこれを読み戻すことはありません。(sensitive) な state に保存されます。読み取りレプリカの場合は省略してください (継承されます)。ポイントインタイム復元の場合も省略してください (ソースバックアップのものが保持されます) 。 |
password_wo |
通常の作成時 (password が設定されていない場合) |
書き込み専用のスーパーユーザーパスワードです。サービスには適用されますが、state には保存されません。password_wo_version が必要です。Terraform 1.11 以降が必要です。 |
password_wo_version |
password_wo と併用 |
password_wo のバージョン番号です。これを変更すると、現在の password_wo 値にローテーションされます。 |
pg_config |
いいえ | キー・バリュー map として指定する Postgres server パラメーターです。 |
pgbouncer_config |
いいえ | キー・バリュー map として指定する PgBouncer connection-pooler パラメーターです。 |
tags |
いいえ | キー・バリュー map として指定するリソースタグです。 |
read_replica_of |
いいえ | レプリカ化するプライマリサービスの ID です。詳細は 読み取りレプリカ を参照してください。restore_to_point_in_time とは同時に指定できません。 |
restore_to_point_in_time |
いいえ | 別の service を特定時点に復元して service を作成します。詳細は ポイントインタイム復元 を参照してください。read_replica_of とは同時に指定できません。 |
以下の属性は読み取り専用で、作成後に ClickHouse Cloud によって設定されます: id、state、created_at、is_primary、hostname、port、および username。connection_string 属性はありません。接続 URI は、たとえば postgres://${username}:${password}@${hostname}:${port}/postgres?sslmode=require のように、hostname、port、username、および宣言したパスワードから構築してください。
サービスを作成する
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"
}
}標準のサービスでは、password または password_wo を宣言する必要があります。値は 12 文字以上で、少なくとも小文字 1 文字、大文字 1 文字、数字 1 文字を含める必要があります。password_wo (password_wo_version と併用) は同じパスワード規則を適用しますが、state には保存されません。ローテーションするには、password_wo_version を変更してください。API は認証情報を返さないため、Terraform がパスワードを書き込む唯一の手段であり続ける必要があります。Terraform の外部 (コンソールまたは API) でローテーションされたパスワードは検出されず、次回 Terraform によって実行されるローテーションで、宣言された値があらためて適用されます。
高可用性
ha_type 引数は、スタンバイ レプリカの数を制御します。
ha_type |
スタンバイ | レプリケーション |
|---|---|---|
none |
なし (プライマリのみ) | — |
async |
スタンバイ 1 台 | 非同期 — 書き込みはスタンバイを待たずにコミットされます |
sync |
スタンバイ 2 台 | 同期 — プライマリは少なくとも 1 台のスタンバイからの確認応答を待ちます |
ha_type は作成後も変更可能で、変更すると HA の切り替えが発生します。詳しくは 高可用性 を参照してください。
読み取りレプリカ
ストリーミング読み取りレプリカを作成するには、read_replica_of にプライマリサービスの id を設定します。レプリカはプライマリの cloud_provider、region、postgres_version、およびスーパーユーザーを継承するため、これら (および 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 を変更するか、ブロックを削除すると、サービスは削除されて再作成されます。詳しくは バックアップと復元 を参照してください。
データソース
既存のサービスを参照できる補助的なデータソースが3つあります:
# 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
}既存のサービスのインポート
既存の ClickHouse Managed Postgres サービスは、service ID を使って Terraform state にインポートできます。
terraform import clickhouse_postgres_service.example xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxxインポート時にはパスワードは復元されません。これは、API がその値を返さないためです。インポート後、最初の apply で、サービスのパスワードは設定で宣言した password または password_wo に切り替えられます。
サポート対象外の操作
以下の項目は、リソース スキーマに意図的に含まれていません。
- 運用コマンド (restart、promote、switchover) 。
- IP許可リスト、プライベート エンドポイント、バックアップ設定、メンテナンス ウィンドウ、顧客管理暗号化キー、BYOC。
- ライフサイクル タイムアウトは設定できません。
timeouts {}ブロックはありません。