Databricks Terraformプロバイダーの正式提供(GA)

[Databricks Terraform Provider Is Now Generally Available \- The Databricks Blog](https://databricks.com/blog/2022/06/22/databricks-terraform-provider-is-now-generally-available.html)の翻訳です。

:::note warn
本書は抄訳であり内容の正確性を保証するものではありません。正確な内容に関しては原文を参照ください。
:::

本日、[Databricks Terraformプロバイダー](https://github.com/databrickslabs/terraform-provider-databricks)が正式提供(GA)となったことを発表できて嬉しく思っています！[HashiCorp Terraform](https://www.terraform.io/)は、安全かつ再現可能なクラウドプロバイダーにまたがるクラウドインフラストラクチャを作成するための人気のあるオープンソースインフラストラクチャアズコード(IaC)ツールです。

最初のDatabricks Terraformプロバイダーは2年以上前にリリースされ、エンジニアはDatabricksレイクハウスプラットフォームの全ての管理の側面を自動化できるようになりました。それ以来、導入数が10倍以上に成長しました。
![](https://databricks.com/wp-content/uploads/2022/06/db-206-blog-img-1.png)
*2021年5月から2022年5月の間にDatabricks Terraformプロバイダーの月間ダウンロード数は10倍に成長しました*

さらに重要なこととして、我々のお客様が自身のプロダクション、開発環境を管理するために、Databricks Terraformプロバイダーを活用するケースが急激に成長していることに気づきました。
![](https://databricks.com/wp-content/uploads/2022/06/db-206-blog-img-2.png)
*Databricks Terraformプロバイダーを導入するお客様のトレンド*

# コードとしてのレイクハウスによるお客様のウィン

Databricksのお客様がDatabricksプロバイダーをうまく活用している領域が複数あります。

## レイクハウスコンポーネントの配備、DataOps/DevOps/MLOpsの実装の全てを自動化

これは複数のユースケースをカバーしており、dev/staging/prod環境間でのジョブのプロモーション、アップグレードが安全であることの保証、新たなプロジェクト/チーム向けに再現可能な環境の作成などが含まれています。

ジョイントの[DAISセッション](https://databricks.com/session_na21/giving-away-the-keys-to-the-kingdom-using-terraform-to-automate-databricks)では、Scribdが自身のデータプラットフォームが、開発者やデータサイエンティストが「自身の探険を選択」できるように自身のツールを活用できるようにするために、どのようにプラットフォームエンジニアリングに依存しているのかを話しました。Databricks Terraformプロバイダーを用いることで、社内の利用者に対して門番として振る舞うのではなく、彼らに柔軟性を提供することができます。彼らがDatabricksで必要とするものは何でもプルリクエストすることができます。

また、他のお客様ではDatabricks Terraformプロバイダーの利用を非常に称賛していました。「迅速な構成の複製」、「コンプライアンス標準の維持」、「何でも自動化できる」、「我々のSREチームのオペレーションの負荷を低減するために変更、民主化した」などです。

## 自動化されたディザスターリカバリー戦略の実装

ディザスターリカバリーは、データのアクセシビリティの重要性を理解する全ての企業や、規制がある業界では「持たなくてはならない」ものです。そして、Terraformはフェイルオーバープロセスが適切に自動化され、自動化プロセスが存在しない場合には一般的なエラーを引き起こすことなしに、予測可能な時間でフェイルオーバープロセスが実行されることを保証する非常に重要な役割を担います。

例えば、illimityのデータプラットフォームはAzure Databricksを中心としており、[以前のブログ記事](https://databricks.com/blog/2022/05/09/how-illimity-bank-built-a-disaster-recovery-strategy-on-the-lakehouse.html)でこれらの機能が説明されています。illimityの規制組織、[Banca d’Italia](https://www.bancaditalia.it/)(イタリアの中央銀行)によって求められるRTOとRPOを保障するために、Databricks Terraformプロバイダーを用いたデータプラットフォームDRシナリオをデザインしました。我々のTerraformインテグレーションによるディザスターリカバリー準備に関する詳細なブログ記事を楽しみにしていてください！

## セキュアなソリューションの実装

現代世界ではセキュリティは重要な要件となっています。しかし、お使いのデータがセキュアであることを保証することは、特に規制のある業界ではシンプルなタスクではありません。これらのソリューションに対しては、データ漏洩の防御、データへのユーザーアクセスのコントロールなど多くの要件が存在します。

例として、データ漏洩保護機能を持つAWS上のワークスペースのデプロイメントを考えてみましょう。通常、AWSのトランジットゲートウェイを用いたハブアンドスポークトポロジーのリファレンスアーキテクチャに沿って複数のDatabricksワークスペースをデプロイすることが推奨されます。[以前の記事](https://databricks.com/blog/2021/02/02/data-exfiltration-protection-with-databricks-on-aws.html)で示したように、セットアップはいくつかの手動のステップを含むAWS UIを通じて行なっています。Databricks Terraformプロバイダーを用いることで、これらは自動化され、[詳細なガイド](https://registry.terraform.io/providers/databrickslabs/databricks/latest/docs/guides/aws-e2-firewall-hub-and-spoke)に従って、たった数ステップでデプロイすることができます。

## Unity Catalogによるデータガバナンスの実現

DatabricksのUnity Catalogは、親しみやすくオープンなインタフェースを用いて、レイクハウスのデータに対してきめ細かいガバナンスとセキュリティを提供します。Databricks TerraformプロバイダーとUnity Catalogを[組み合わせる](https://registry.terraform.io/providers/databrickslabs/databricks/latest/docs/guides/unity-catalog)ことで、お客さまは自動化を通じて簡単かつ大規模にレイクハウスに対して統制をかけることができます。そして、これは大企業にとっては非常に重要なこととなります。

# プロバイダーの品質とサポート

今ではプロバイダーは正式にDatabricksによってサポートされており、[Githubを通じた](https://github.com/databricks/terraform-provider-databricks/issues/new/choose)イシュートラッキングが確立されています。プルリクエストはいつでも歓迎です。コードはリリースごとに膨大なインテグレーションを通過しており、非常に広範な[テストコードのカバレッジ](https://app.codecov.io/gh/databricks/terraform-provider-databricks)を持っています。
![](https://databricks.com/wp-content/uploads/2022/06/db-206-blog-img-3.png)
*Terraformが全てのDatabricksのリソースと背後のクラウドインフラストラクチャの管理をサポートします*

# 最も活用されているリソース

上述したユースケースは最も典型的なものであり、Databricks Terraformプロバイダーを用いた他のケースも数多く存在します。次の図ではTerraformを通じてよく管理されているリソースタイプがどれかに関する別のビューを提供しています。
![](https://databricks.com/wp-content/uploads/2022/06/db-206-blog-img-4.png)
*Databricks Terraformプロバイダーにおける特定のリソース/データソースを利用しているお客様の割合*

# Databricks TerraformプロバイダーのGAバージョンに移行する

Databricks TerraformプロバイダーをGAにするために、[https://github\.com/databrickslabs](https://github.com/databrickslabs)から[https://github\.com/databricks](https://github.com/databricks)に移動しました。スムーズな移行を確実にするために、HashicorpのTerraformレジストリチームと密に作業を行いました。既存のterraformデプロイメントは、皆様の方でアクションをする必要なしに、期待する通りに稼働し続けます。ソースコントロールにチェックインされるステートディレクトリには、[\.terraform\.lock\.hclファイル](https://www.terraform.io/language/files/dependency-lock#lock-file-location)が存在する必要があります。`terraform init`を実行することで以下の警告が出ます。

```
Warning: Additional provider information from registry

The remote registry returned warnings for registry.terraform.io/databrickslabs/databricks:
```

Terraform 0.13以降を使用している場合には、

```
this provider has moved to databricks/databricks. Please update your source in required_providers.
```

`required_providers`ブロックで`databrickslabs/databricks`を`databricks/databricks`に置き換えると警告は出なくなります。`*.tf`ファイルに対してグローバルの「検索・置換」を行なってください。あるいは、同じことを行うために、コマンドラインから`python3 -c "$(curl -Ls https://dbricks.co/updtfns)"`を実行することもできます。

しかし、`terraform init`コマンドを実行した際に「Failed to install provider」や「Failed to query available provider packages」といった問題に遭遇するかもしれません。これはソースコードのバージョンコントロールに`.terraform.lock.hcl`をチェックインしていないためです。

```
Error: Failed to install provider

Error while installing databrickslabs/databricks: v1.0.0: checksum list has no SHA-256 hash for "https://github.com/databricks/terraform-provider-databricks/releases/download/v1.0.0/terraform-provider-databricks_1.0.0_darwin_amd64.zip"
```

以下の3ステップで修正することができます。

- `python3 -c "$(curl -Ls https://dbricks.co/updtfns)"`コマンドで、全ての`.tf`ファイルの`databrickslabs/databricks`を`databricks/databricks`に置き換えます。
- `terraform state replace-provider databrickslabs/databricks databricks/databricks`コマンドを実行し、変更を承認します。詳細は[Terraform CLI](https://www.terraform.io/cli/commands/state/replace-provider)をご覧ください。
- 全てが適切に動作していることを確認するために`terraform init`を実行します。

これで全てです。これで`terraform apply`も期待通りに動作するはずです。

Databricks Terraformプロバイダーの[ドキュメント](https://qiita.com/taka_yayoi/items/691ee4909b0961de5ad1)をチェックし、この[ガイド](https://docs.databricks.com/dev-tools/terraform/e2-workspace.html)や[サンプルリポジトリ](https://github.com/databricks/terraform-databricks-examples/)を用いてTerraformによるDatabricksレイクハウスの管理の自動化をスタートすることができます。既存のDatabricks環境があるが、まだTerraformで管理していない場合には、スタート地点として*実験段階の*[エクスポーター機能](https://registry.terraform.io/providers/databrickslabs/databricks/latest/docs/guides/experimental-exporter)を使用することができます。

さらに、我々のエンジニアはTerraformプロバイダーサポートに、新たなDatabricksの機能、新規モジュール、テンプレート、ウォークスルーを追加し続けています。

### Databricks 無料トライアル

[Databricks 無料トライアル](https://databricks.com/jp/try-databricks)