メインコンテンツまでスキップ

Terraform Provider

VeloDB Terraform providerは、VeloDB Cloud Management APIを通じてVeloDB Cloudのウェアハウス、コンピュートクラスター、ネットワークアクセス、PrivateLink登録、および接続メタデータを管理します。

はじめに

ステップ1: APIキーの作成

VeloDB CloudコンソールでOrganization → API Keysに移動するか、https://www.velodb.cloud/organization/api-keysに直接アクセスしてください。

Create API Keyをクリックし、ロールと有効期限を選択してから、すぐにキーをコピーしてください。キーは一度しか表示されません。

キーは環境変数に保存し、Terraformファイルやソースコントロールには保存しないでください:

export VELODB_API_KEY='key-...'

ステップ2: APIホストを設定する

VeloDB Cloud Management APIホストはapi.velodb.cloudです。これを環境変数として設定してください:

export VELODB_HOST='api.velodb.cloud'
注記

hostは単純なホスト名です。https:// を含めないでください。プロバイダーが自動的に追加します。

ステップ3: Terraformの設定

Terraform設定でプロバイダーを宣言してください:

terraform {
required_providers {
velodb = {
source = "velodb/velodb"
version = "~> 1.1"
}
}
}

provider "velodb" {
host = var.velodb_host
api_key = var.velodb_api_key
}

variable "velodb_host" {
type = string
description = "VeloDB Cloud Management API host, without https://."
default = "api.velodb.cloud"
}

variable "velodb_api_key" {
type = string
description = "VeloDB Cloud API key."
sensitive = true
}

変数を宣言せずに、環境変数を介して直接認証情報を渡すこともできます:

export VELODB_HOST='api.velodb.cloud'
export VELODB_API_KEY='key-...'
terraform plan

使用例

初期コンピュートクラスターを持つSaaSウェアハウスを作成する:

resource "velodb_warehouse" "analytics" {
name = "analytics"
deployment_mode = "SaaS"
cloud_provider = "aws"
region = "us-east-1"
admin_password = var.admin_password

initial_cluster {
zone = "us-east-1a"
compute_vcpu = 4
cache_gb = 100

auto_pause {
enabled = true
idle_timeout_minutes = 30
}
}
}

コンピュートクラスターを追加:

resource "velodb_cluster" "etl" {
warehouse_id = velodb_warehouse.analytics.id
name = "etl"
cluster_type = "COMPUTE"
zone = "us-east-1a"
compute_vcpu = 8
cache_gb = 200
desired_state = "running"
}

アプリケーションと自動化のための接続情報を読み取る:

data "velodb_warehouse_connections" "analytics" {
warehouse_id = velodb_warehouse.analytics.id
}

output "jdbc_urls" {
value = [
for ep in data.velodb_warehouse_connections.analytics.public_endpoints :
ep.url if ep.protocol == "jdbc"
]
}

既存のBYOCウェアハウスをインポートする:

import {
to = velodb_warehouse.byoc
id = "AWVA7PYB"
}

resource "velodb_warehouse" "byoc" {
name = "test_cli"
deployment_mode = "BYOC"
cloud_provider = "aws"
region = "us-east-1"
}

Resources

ResourcePurpose
velodb_warehouseSaaS warehouseの作成、更新、削除、および既存のBYOC warehouseのインポートと読み取り。
velodb_clusterwarehouse内のCOMPUTEクラスターの管理(リサイズ、一時停止、再開、再起動を含む)。
velodb_warehouse_public_access_policyパブリックエンドポイントアクセスポリシーとCIDR許可リストの管理。
velodb_warehouse_private_endpointwarehouseアクセス用のインバウンドPrivateLinkエンドポイントの登録と記述。
velodb_private_link_endpoint_serviceVeloDB CloudがPrivateLinkを通じてアクセスできる外部エンドポイントサービスの登録。

Data sources

Data sourcePurpose
velodb_warehousesID、名前、クラウドプロバイダー、リージョン、またはデプロイメントモードによるwarehouseの一覧表示。
velodb_clusterswarehouse内のクラスターをID、名前、ステータス、タイプ、または課金モデルで一覧表示。
velodb_warehouse_connectionsパブリック/プライベートエンドポイント、computeクラスター、observerグループ、およびPrivateLinkサービス名の読み取り。
velodb_warehouse_versions有効なwarehouseアップグレード対象バージョンIDの一覧表示。
velodb_private_link_endpoint_servicesアウトバウンドPrivateLinkエンドポイントサービスと接続されたエンドポイントの一覧表示。

Known limitations

  • BYOC warehouseはインポートと読み取りが可能ですが、このプロバイダーは新しいBYOC warehouseを作成しません。VeloDB CloudでBYOC warehouseを作成してから、warehouse IDをTerraformにインポートしてください。
  • velodb_clusterCOMPUTEクラスターのみを管理します。SQLおよびOBSERVERクラスタータイプは計画時にブロックされます。
  • CPUとcacheのリサイズは一度に1つの次元で適用されます。compute_vcpuを増加させる場合は、cache_gbを新しいCPUサイズの最小値に設定し、追加のcacheのみの変更は後の実行で適用してください。
  • admin_passwordはAPIで書き込み専用であり、Terraformがパスワードローテーションを検出できるよう、機密値としてTerraformステートに保存されます。