Databricks

Terraform for Databricks: IaCで実現するワークスペース自動化

2026-03-26
更新: 2026-03-27
NicheeLab編集部

Databricks Terraform Providerは、Databricksのワークスペース、クラスタ、ジョブ、Unity Catalog、 ネットワークなどのリソースをHashiCorp Terraform(HCL)で宣言的に管理するためのプロバイダです。 Infrastructure as Code(IaC)により、手動操作を排除し、環境構築の再現性・監査性を確保できます。

この記事では、Terraform Providerの基本構成、主要リソースの一覧、 HCLの記述例、状態管理のベストプラクティス、そしてDABsとの使い分けを解説します。

Databricks Terraform Providerの概要

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_clusterAll-Purpose Clusterの定義
クラスタポリシーdatabricks_cluster_policyクラスタ作成制約のJSON定義
Instance Pooldatabricks_instance_pool事前確保インスタンスプール
ジョブdatabricks_jobWorkflowジョブの定義
Secretdatabricks_secret_scope / databricks_secretシークレットスコープとシークレット値
Unity Catalogdatabricks_catalog / databricks_schema / databricks_grantsカタログ、スキーマ、権限付与
External Locationdatabricks_external_location外部ストレージのロケーション定義
Storage Credentialdatabricks_storage_credentialクラウドストレージへの認証情報
ネットワークdatabricks_mws_networks / databricks_mws_private_access_settingsVPC / VNet構成、Private Link
グループ・ユーザーdatabricks_group / databricks_user / databricks_service_principalID管理、サービスプリンシパル

基本的なHCL構成例

以下は、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)
排他ロックDynamoDBBlob 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
  }
}

環境差分管理(dev / staging / prod)

Terraformでの環境差分管理には、主に以下の2つのアプローチがあります。

  • Terraform Workspaces:同一HCLファイルを使い、 terraform workspace select devで環境を切り替える。 状態ファイルがworkspaceごとに分離される
  • ディレクトリ分離 + tfvars:environments/dev/, environments/prod/のように ディレクトリを分け、各環境のtfvarsファイルで変数をオーバーライドする。 大規模構成で推奨されるアプローチ

DABs vs Terraform 比較表

比較項目TerraformDatabricks Asset Bundles
得意領域インフラ基盤(ワークスペース、ネットワーク、UC、ポリシー)アプリケーションアセット(ジョブ、DLT、ノートブック、ML)
定義言語HCLYAML(databricks.yml)
状態管理明示的(tfstate + リモートバックエンド)Databricksワークスペース側で暗黙管理
plan/previewterraform planで差分プレビューdatabricks bundle validateで検証
マルチクラウドAWS / Azure / GCPのリソースも同時管理可能Databricksアセットのみ
学習コスト中〜高(HCL構文 + 状態管理の理解)低(YAML + Databricks CLIの理解)
開発者向きインフラ / プラットフォームエンジニア向けデータエンジニア / MLエンジニア向け

試験で問われるポイント

  • 「ワークスペース構成を再現可能にコード管理するには?」→ Terraform(Databricks Provider)
  • 「クラスタポリシーやSecret Scopeをコードで定義するには?」→ Terraform
  • 「ジョブとDLTパイプラインの環境間デプロイには?」→ DABs(Terraformでも可能だが、DABsがよりDatabricksネイティブ)
  • 「TerraformとDABsの使い分けは?」→ インフラ基盤はTerraform、アプリケーションアセットはDABs

問題で確認

Platform Admin / Data Engineer Professional

問題 1

プラットフォームチームが、新しいDatabricksワークスペースの作成、Unity Catalogメタストアの構成、クラスタポリシーの定義、ネットワーク設定(VPC Peering)を一括でコード管理したい。最も適切なツールはどれか。

  1. Databricks Asset Bundles(DABs)でdatabricks.ymlにすべてを定義する
  2. Databricks CLIのworkspaceコマンドで手動構築する
  3. Terraform(Databricks Provider)でHCLファイルにリソースを定義し、CI/CDからterraform applyを実行する
  4. Databricks UIでワークスペースを作成し、設定をJSON Exportでバックアップする

正解: 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)も簡潔です。

この記事で学んだ内容を問題で確認しましょう

16,000問以上の問題で実力チェック

無料で問題を解いてみる
この記事の著者

NicheeLab編集部

データエンジニアリング・クラウド資格の専門家。Databricks・Snowflake等の認定資格を保有し、実務経験に基づいた問題作成・解説を行っています。NicheeLab運営。


関連記事
Databricks

Databricks資格一覧|全7試験・難易度・勉強法

Databricks認定資格全7試験の一覧・難易度・出題範囲・合格ラインを徹底解説。2026年最新版の公式試験ガイドに準...

Databricks

Databricks試験の難易度ランキング|全7資格を徹底比較

Databricks認定全7試験の難易度をランキング形式で徹底比較。合格率・学習時間・出題傾向から難易度を分析。...

Databricks

Databricks資格の勉強方法|最短合格ルートと学習時間の目安

Databricks認定資格に最短で合格するための勉強方法を完全ガイド。公式リソース・問題集・学習スケジュールを徹底解説...

Databricks

Databricks Data Engineer Associate完全解説|出題範囲・問題例・合格戦略

Databricks Certified Data Engineer Associate試験を徹底解説。5つの出題ドメイ...

Databricks

Databricks Data Engineer Professional完全解説|上級試験の攻略法

Databricks Certified Data Engineer Professional試験を徹底解説。10の出題...

Databricksの記事一覧 (105件)
© 2026 NicheeLab All rights reserved.