3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

UnityCatalog環境をTerraformを使って10分で構築してみる

Last updated at Posted at 2022-10-04

はじめに

Unity Catalogは素晴らしい機能ですが新たにIAM Roleを作成したり、S3 Bucketを作成したりWorkspaceへのMetastore追加や、Metastoreへの管理グループ設定など初期設定が正直少し面倒です。

DatabricksではTerraform providerを提供しており構築の自動化がサポートされております。もちろんUnity Catalogもサポートされているということで今回利用してみました。

今回使用したオリジナルのテンプレートはこちらです。ユーザー作成箇所など少しカスタマイズして利用しております。

テンプレートで自動化される内容

今回のterraform templateを使って以下の環境を構築できます。

  • [AWS] S3 Bucket for metastore
  • [AWS] IAM role and policy for metastore
  • [Databricks Account Console] Metastore管理グループ作成
  • [Databricks Account Console] Metastore の登録
  • [Databricks Account Console] WorkspaceへのMetastore Assign
  • [Workspace] Storage Credentialの登録
  • [Workspace] Catalog作成
  • [Workspace] Schema作成

0.事前準備

以下の環境をあらかじめセットアップしておきます。

また今回はすでにDatabricks Workspace環境がある前提を想定しております。

  • Databricks Account User (Admin権限あり)
  • Workspace (Unity Catalogを利用するWorkspaceを予め準備しておく)

今回は上記環境が揃った状態からスタートということで。。

1. テンプレートのダウンロード

今回利用するterraformテンプレートはこちらです。

git clone https://github.com/maroon-spec/unity_setup_aws.git

2. 変数パラメーターの設定

今回の環境を構築するにあたり、以下の情報が必要になります。
unity_catalog.auto.tfvarsを開いて、以下のパラメータを指定して上書きします。

パラメータ 説明
aws_region "ap-northeast-1" AWS Region
aws_profile "default" AWS CLI profile
create_aws_resources true trueのみ
unity_metastore_bucket "databricks-uc-tf-metastore" metastore用S3bucket名
unity_metastore_iam "uc-tf-role"  metastore用IAM Role名
databricks_workspace_ids ["19710001324","17899832448"]  WorkspaceIDリスト
unity_admin_group "tf_admin_group"  metastore Ownerグループ名
databricks_account_id "xxx-xxxxx-xxxx-xxx"
databricks_workspace_host "https://dbc-xxdfdes.cloud.databricks.com" Workspace name
databricks_account_username "hoge.hoge@databricks.com" Admin権限をもつユーザ

image.png

3. terraformの実行

あとは、以下の3ステップでterraformを実行するだけです。

a) terraform init

初回のみですが、対象のディレクトリー上で上記コマンドを実行します。

terraform init

b) terraform plan

initが成功したら続いてplanを実行して、デプロイ計画に問題がないかチェックします。

terraform plan

Databricks Accountのユーザーパスワードがプロンプトで聞かれるので、パスワードを入力します。
image.png

記述に問題がなければ以下のようにデプロイ計画が表示されますので、中身をチェックしておきます。
image.png

c) terraform apply

最後にデプロイ計画に問題が無ければapplyします。

terraform apply

以下のようなメッセージが出た場合は、AWS側のIAM作成タイミングとDatabricks側での設定タイミングが合わずエラーになっているだけなので、再度applyを実行してみてください。
image.png

最後にApply Complete とメッセージが出れば成功です。

ちなみに環境を元に戻すにはterraform destroy を実行すると、作成されたオブジェクトをクリーンナップしてくれます。非常に便利ですね。

確認してみよう

S3 Bucket名は指定した名前の後ろに6文字のランダム値が付きます。(嫌な人はテンプレートを修正してください)
image.png

IAM Roleには、2つのポリシーが付与されます。(上記S3 Bucket用とサンプルデータなどがあるDatabricks-dataset用)
image.png

Databrick Account Consoleにてmetastoreを確認(今回はus-west-2に作成しました)
Metastore Adminには作成したグループ(tf_admin_gropu)がオーナーとして登録されます。
こちらのグループメンバーにならないと新規カタログなどは作成できません。
image.png

Workspaceにログインすると、新規のカタログやスキーマが作成されているのを確認できます。
image.png

ストレージクレデンシャルを確認するとちゃんと登録されております。
image.png

ということで、事前準備部分は除いてですが。。10分以内で構築することができました。AWS Console行ったり、Databricks Console行ったり、Workspaceにログインしたりせずに済むので楽ですね。

参考情報

公式マニュアルや参考にしたファイルはこちらです。

UnityCatalogセットアップについてはこちらもご覧ください。
https://qiita.com/maroon-db/items/57cee03cef202c839b94

3
1
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
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?