3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Terraformを用いたカタログのWorkspace Bindings設定をWeb Terminalを使ってDatabricks上で完結させる

Last updated at Posted at 2024-12-03

概要

本記事では、Terraformを使ってカタログを作成し、そのカタログとワークスペースをバインディングする手順を紹介します。
Terraformを利用することで、以下のことが可能となります。

  • databricks_catalogリソースを利用してカタログを作成し、デフォルトで作成されるスキーマを無効化した状態でデプロイできます
  • isolation_mode = 'ISOLATED'を指定することで、作成したカタログを、作成を行ったワークスペースにのみ関連付け、他のワークスペースに対して権限を付与しないようにできます

また、DatabricksのWeb Terminal機能を利用することで、Databricks環境内でデプロイ作業を完結させる方法も紹介します。

背景

Databricks UIからカタログを作成した場合、デフォルトでは、作成されたカタログが属するメタストアに紐づくすべてのワークスペースがそのカタログの情報にアクセス可能となります。これにより、意図しないデータ公開が発生する可能性があります。そのため、カタログを特定のワークスペースにのみ関連付け、アクセス権限を制限する方法を検討しました。

前提

  • 作業はDatabricksのWeb Terminalを使用して行う
  • メタストア管理者権限を持っていること

Web Terminalを使用することで、Databricks内で直接Terraformを実行できるため、デプロイ作業をDatabricks環境内で完結させることができます。

手順

1. DatabricksのWeb Terminalを起動する

Web Terminalの起動方法:

  1. DatabricksのUI上で、メタストア管理者権限を持つユーザーが所有する「All purpose」クラスタを起動します
  2. 「Apps」タブからWeb Terminalを起動します

2. Terraformのインストール

Terraformの公式サイトを参考に、以下のコマンドでインストールします。

wget -O - https://apt.releases.hashicorp.com/gpg | sudo gpg --dearmor -o /usr/share/keyrings/hashicorp-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/hashicorp-archive-keyring.gpg] https://apt.releases.hashicorp.com $(lsb_release -cs) main" | sudo tee /etc/apt/sources.list.d/hashicorp.list
sudo apt update && sudo apt install terraform

Web Terminalはセッションがリフレッシュされると、インストールされたライブラリがリセットされるため、毎回インストールコマンドを実行する必要があります。毎回の実行を避けるためには、起動時に自動でTerraformをインストールする処理の導入を検討することをお勧めします。

3. 作業フォルダに移動する

以下のコマンドで、作業用のDatabricksフォルダに移動します。

cd /Workspace/<your_work_folder_path>

ここで記載している「Workspace」はnotebookを保存している場所のことです。(Databricks UIの左パネルに表示されているWorkspaceのこと。)

4. providers.tfファイルを作成

作業フォルダ内にproviders.tfという名前でTerraformのプロバイダー設定ファイルを作成し、以下を記述します。

terraform {
  required_providers {
    databricks = {
      source = "databricks/databricks"
      version = "1.59.0"
    }
  }
}
provider "databricks" {
  host = "<Databricks_hostname>"
  # tokenは直接記載しません
}

最新のTerraformプロバイダーのバージョンはこちらから確認できます。

5. main.tfファイルを作成

作業フォルダ内にmain.tfというファイルを作成し、以下の内容を記述します。
databricks_catalogリソースを使ってカタログを作成します。

resource "databricks_catalog" "<catalog_name>" {
  name    = "<catalog_name>"
  comment = "<comment>"
  properties = {
    owner = "<owner_name>"
  }
  storage_root = "<managed_location_path>"
  isolation_mode = "ISOLATED"
}

output "catalog_name" {
  value = databricks_catalog.<catalog_name>.name
}
  • storage_root:managed_location_pathには、カタログデータを保存するロケーションのパスを指定します
  • isolation_mode:ISOLATEDを指定することで、カタログを実行したワークスペースにのみ関連付け、他のワークスペースに権限を付与しないようにできます

6. DatabricksでPAT (Personal Access Token)を発行

DatabricksのUI上で、PAT発行手順に従って、Personal Access Token(PAT)を発行します。

7. 環境変数にPATを設定

Web Terminal上で、以下のコマンドを実行し、環境変数DATABRICKS_TOKENに先ほど取得したPATを設定します。

export DATABRICKS_TOKEN=<PAT>

Databricksには環境変数が用意されており、直接値を設定することができます。
参考リンク

8.Terraformの初期化

次に、Terraformの初期化を実行します。

terraform init

9.Terraformプランの作成

作成したカタログのリソースを確認するために、以下のコマンドでTerraformプランを作成します。

terraform plan

10. Terraformの適用

プランが問題なければ、以下のコマンドでTerraformを適用し、カタログを作成します。

terraform apply

適用後、isolation_mode = "ISOLATED"を指定したため、カタログは実行したワークスペースにのみ関連付けられます。

11. 他のワークスペースへのカタログ紐付け

作成したカタログを他のワークスペースに紐付ける場合は、databricks_workspace_bindingリソースを利用します。詳細は、公式ドキュメントを参照してください。

まとめ

本記事では、Terraformを使用してDatabricksでカタログを作成し、そのカタログを特定のワークスペースにのみ関連付ける方法について紹介しました。
ポイントは以下の通りです。

  • databricks_catalogリソースを使用することで、Databricks上でカタログを作成できます
  • isolation_mode = 'ISOLATED'を指定することで、カタログを作成したワークスペースにのみ関連付け、他のワークスペースからアクセスできないように制限できます
  • DatabricksのWeb Terminalを使用すれば、Terraformのインストールからデプロイ作業までDatabricks環境内で完結することができます
  • カタログのデプロイ後、必要に応じてdatabricks_workspace_bindingリソースを使用して他のワークスペースとの紐付けを行うことが可能です

こちらの手法を利用することで、意図しないデータ公開を防ぎつつ、カタログ作成を行うことができます。

3
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?