5
2

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.

Terraform Cloudでスムーズに行うDatabricksのデプロイ

Last updated at Posted at 2024-01-14

HashicorpさんのYouTube Channelで、コラボした動画を公開して頂きました。
その中で紹介したデモ環境の構築ガイドとしてこちらで紹介したいと思います。

まずは、こちらのデモ動画をご覧ください。(デモは 7:30くらいから)

デモ環境

image.png

ソースコード

今回は、こちらのDatabricks Exampleのaws-workspace-basic を利用しました。

以下のモジュールも利用するので一緒にダウンロードしておきます。

修正箇所

aws-workspace-basic Moduleの main.tf の prefix指定の箇所がうまく機能しなかったので、以下のように修正しました。

locals {
  #prefix = var.prefix != "" ? var.prefix : "demo${random_string.naming.result}"
  prefix = "tfdemo${random_string.naming.result}"
}

あとは、ローカルのModuleを参照するように修正

module "aws-workspace-basic" {
  #source                = "github.com/databricks/terraform-databricks-examples/modules/aws-workspace-basic"
  source = "./modules/aws-workspace-basic"
  databricks_account_id = var.databricks_account_id
}

VSCode上での設定

今回は、こちらはメインではないので割愛させていただきますが、以下のように設定しております。

  • git repositoryの作成 (自分のprivate repository)
  • branch(dev) の作成
  • 上記ソースコードを修正後、Commit & Push

これでGitHub上にコードをデプロイできました。あとはPull Requestして、Mergeしていくだけです。一旦、Terraform Cloudのセットアップのため、ここで止めておきます。

Terraform Cloudの設定

Terraform Cloudは、今回はFree Planを利用しました。有償版はコラボレーション機能やAudit機能などの利用ができるようになるようです。詳細はこちらのPricing Pageをご覧ください。

まずはこちらからアカウントを作成してログインします。

image.png

次にOrganizationを作成します。
image.png

Oraganization内に、Project&Workspaceを作成します。(今回はいきなりWorkspaceを作成しました。その場合defaultプロジェクト内に作成されます)

今回は、Version Control Workspaceを選択しました。この場合登録したリポジトリのバージョンにアップデートがあると自動的にRunで実行されるみたいです。
image.png

ここで、先ほどのGitHubのRepositoryを登録します。
image.png

これで、UI上からRunの実行や、Planの確認などができるようになります。

Variablesへの認証情報などの環境変数設定

今回AWSとDatabricks Account Consoleへの認証が必要になります。Variablesにこれらを事前に登録しておく必要があります。

Databricks Account Consoleへの認証にはOAuth M2M認証を利用しました。この場合Service Principalの作成が必要です。OAuth認証以外にもBasic認証やToken認証などをサポートしております。詳細はこちら

OAuth M2M認証利用時のTerraform Variablesに登録するEnvironment変数はこちらです。

  1. DATABRICKS_HOST
  2. DATABRICKS_ACCOUNT_ID
  3. DATABRICKS_CLIENT_ID (Service Principal)
  4. DATABRICKS_CLIENT_SECRET (Service Principal)

3,4に関しては、Service Principalを作成して、そちらのClient IDとClient Secretを登録する必要があります。Service Principalは、Account Consoleから作成できます。
image.png

上記以外にも、AWSでインフラのデプロイ権限をもつロールを作成して、以下を登録します。

  • AWS_ACCESS_KEY_ID
  • AWS_SECRET_ACCESS_KEY

image.png

  • DATABRICKS_HOSTは、Defaultで、https://accounts.cloud.databricks.com に設定されるため今回割愛しました。
  • DATABRICKS_ACCOUNT_IDは、module内でも呼ばれるため、envだけではなくterraform変数としても登録が必要です。

以上で、Terraform Cloudの設定は終了です。

Pull Requestをして、Planの確認

git側で、pull requestを行うと、terraform cloud上で、Planが実行され、実行前の内容を確認できます。
image.png

この時は、applyまでは実行されません。planを確認して問題なければ、mergeをしましょう。

Plan & apply

main branchにmergeされると、自動的にterraform cloud側でplan&applyが実行されます。
(applyは、plan内容を確認して、OKすると適用されます)

image.png

Delete処理はどうするの?

実行内容を削除したい場合は、"Settings" - "Destruction and Deletion" - "Manually destroy" で実行できました。

image.png

最後に

今回、動画作成のため初めてTerraform Cloudを利用してみましたが、非常に簡単に設定できてもっと早く使っていたら良かったなと感じました。

特に今まで、VSCode上のterminalでplan&applyしてましたが、過去に実行した履歴の確認が面倒だったり、複数のterraformを作成した際に、管理が面倒だったりしましたが、これならそういう煩わしさなどから解放されそうです。またgitとの連携も簡単で、本番利用でのCI/CDを考えた場合は、このような仕組みが必要だなと感じました。

Databricksでは、Terraform Providerとして様々なモジュールやリソースを提供しております。是非運用に利用してみてください。

5
2
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
5
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?