Databricks Terraform Providerは、Databricksのワークスペース、クラスタ、ジョブ、Unity Catalog、 ネットワークなどのリソースをHashiCorp Terraform(HCL)で宣言的に管理するためのプロバイダです。 Infrastructure as Code(IaC)により、手動操作を排除し、環境構築の再現性・監査性を確保できます。
この記事では、Terraform Providerの基本構成、主要リソースの一覧、 HCLの記述例、状態管理のベストプラクティス、そしてDABsとの使い分けを解説します。
Databricks Terraform Providerは、Databricks公式がメンテナンスするHashiCorp Terraform用プラグインです。 Terraform Registryで公開されており、HCLファイル内で以下のようにプロバイダを宣言して使用します。
terraform {
required_providers {
databricks = {
source = "databricks/databricks"
version = "~> 1.40"
}
}
}
provider "databricks" {
host = var.databricks_host
token = var.databricks_token
}認証には、Personal Access Token(PAT)、サービスプリンシパル、 Azure Managed Identity、AWS IAMロールなどが使用できます。 本番環境ではPATではなくサービスプリンシパルを使い、CI/CDパイプラインから実行するのが標準的です。
| カテゴリ | Terraformリソース名 | 管理対象 |
|---|---|---|
| ワークスペース | databricks_mws_workspaces | ワークスペースの作成(E2アーキテクチャ) |
| クラスタ | databricks_cluster | All-Purpose Clusterの定義 |
| クラスタポリシー | databricks_cluster_policy | クラスタ作成制約のJSON定義 |
| Instance Pool | databricks_instance_pool | 事前確保インスタンスプール |
| ジョブ | databricks_job | Workflowジョブの定義 |
| Secret | databricks_secret_scope / databricks_secret | シークレットスコープとシークレット値 |
| Unity Catalog | databricks_catalog / databricks_schema / databricks_grants | カタログ、スキーマ、権限付与 |
| External Location | databricks_external_location | 外部ストレージのロケーション定義 |
| Storage Credential | databricks_storage_credential | クラウドストレージへの認証情報 |
| ネットワーク | databricks_mws_networks / databricks_mws_private_access_settings | VPC / VNet構成、Private Link |
| グループ・ユーザー | databricks_group / databricks_user / databricks_service_principal | ID管理、サービスプリンシパル |
以下は、Unity Catalogのカタログ・スキーマ作成とクラスタポリシーの定義を含む基本構成です。
resource "databricks_catalog" "analytics" {
name = "analytics"
comment = "分析チーム用カタログ"
}
resource "databricks_schema" "bronze" {
catalog_name = databricks_catalog.analytics.name
name = "bronze"
comment = "RAWデータ格納用スキーマ"
}
resource "databricks_grants" "bronze_grants" {
schema = databricks_schema.bronze.id
grant {
principal = "data-engineers"
privileges = ["USE_SCHEMA", "CREATE_TABLE", "SELECT"]
}
grant {
principal = "data-analysts"
privileges = ["USE_SCHEMA", "SELECT"]
}
}
resource "databricks_cluster_policy" "standard" {
name = "standard-policy"
definition = jsonencode({
"spark_version" : {
"type" : "regex",
"pattern" : "14\\.3\\.x-scala.*"
},
"num_workers" : {
"type" : "range",
"minValue" : 1,
"maxValue" : 8,
"defaultValue" : 2
},
"autotermination_minutes" : {
"type" : "range",
"minValue" : 10,
"maxValue" : 60,
"defaultValue" : 20
},
"custom_tags.CostCenter" : {
"type" : "fixed",
"value" : "analytics-team"
}
})
}
resource "databricks_secret_scope" "app_secrets" {
name = "app-secrets"
}Terraformの状態ファイル(terraform.tfstate)はリソースの現在の状態を記録するファイルです。 チーム開発では以下のベストプラクティスに従います。
| 要件 | AWS構成 | Azure構成 |
|---|---|---|
| 状態ファイルの保存先 | S3バケット | Azure Storage Account(Blob) |
| 排他ロック | DynamoDB | Blob Lease |
| 暗号化 | S3 SSE(AES-256 / KMS) | Azure Storage Service Encryption |
| バージョニング | S3バージョニング有効 | Blob Versioning有効 |
| アクセス制御 | IAMポリシーで制限 | Azure RBACで制限 |
# AWSの場合のバックエンド設定
terraform {
backend "s3" {
bucket = "my-terraform-state"
key = "databricks/prod/terraform.tfstate"
region = "ap-northeast-1"
dynamodb_table = "terraform-locks"
encrypt = true
}
}Terraformでの環境差分管理には、主に以下の2つのアプローチがあります。
| 比較項目 | Terraform | Databricks Asset Bundles |
|---|---|---|
| 得意領域 | インフラ基盤(ワークスペース、ネットワーク、UC、ポリシー) | アプリケーションアセット(ジョブ、DLT、ノートブック、ML) |
| 定義言語 | HCL | YAML(databricks.yml) |
| 状態管理 | 明示的(tfstate + リモートバックエンド) | Databricksワークスペース側で暗黙管理 |
| plan/preview | terraform planで差分プレビュー | databricks bundle validateで検証 |
| マルチクラウド | AWS / Azure / GCPのリソースも同時管理可能 | Databricksアセットのみ |
| 学習コスト | 中〜高(HCL構文 + 状態管理の理解) | 低(YAML + Databricks CLIの理解) |
| 開発者向き | インフラ / プラットフォームエンジニア向け | データエンジニア / MLエンジニア向け |
Platform Admin / Data Engineer Professional
問題 1
プラットフォームチームが、新しいDatabricksワークスペースの作成、Unity Catalogメタストアの構成、クラスタポリシーの定義、ネットワーク設定(VPC Peering)を一括でコード管理したい。最も適切なツールはどれか。
正解: C
ワークスペース作成・UCメタストア・クラスタポリシー・ネットワーク設定はインフラ基盤レイヤーであり、Terraformの得意領域です。DABsはジョブ/DLT/ノートブックなどアプリケーションアセットに特化しており、ワークスペース作成やVPC Peeringには対応していません。手動構築やJSON Exportは再現性と監査性に欠けます。
Databricks Terraform Providerの認証はどのように設定しますか?
主に3つの方法があります。(1) Personal Access Token(PAT)をDATABRICKS_TOKEN環境変数で設定、(2) Azure AD / AWS IAM / GCPのサービスアカウントによる認証、(3) Databricks CLI経由のプロファイル認証です。本番運用ではサービスプリンシパル + CI/CDパイプラインからの認証が推奨されます。PATは個人開発用途に限定し、トークンの有効期限を設定してください。
Terraform stateファイルはどこに保存すべきですか?
ローカルファイルシステムではなく、リモートバックエンド(AWS S3 + DynamoDB / Azure Storage Account + Blob / GCS + Terraform Cloud)に保存してください。チーム開発では状態ファイルの排他ロックが重要であり、DynamoDB(AWS)やBlob Lease(Azure)でロック機構を有効にします。状態ファイルにはシークレットが含まれることがあるため、暗号化も必須です。
TerraformとDatabricks Asset Bundles(DABs)のどちらを使うべきですか?
インフラ基盤レイヤー(ワークスペース作成、UCメタストア、クラスタポリシー、ネットワーク設定、Secret Scope)はTerraformで管理し、アプリケーションレイヤー(ジョブ、DLTパイプライン、ノートブック、MLモデル)はDABsで管理する二層構成が推奨です。Terraformでもジョブは管理できますが、DABsの方がdatabricks.ymlでDatabricksネイティブに記述でき、環境差分管理(targets)も簡潔です。
NicheeLab編集部
データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。
Databricks資格一覧|全7試験・難易度・勉強法
Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...
Databricks試験の難易度ランキング|全7資格を徹底比較
Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...
Databricks資格の勉強方法|最短合格ルートと学習時間の目安
Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...
Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略
Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...
Databricks Data Engineer Professional完全解説|上級試験の攻略法
Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...