😽

Azure Databricksをインフラ視点で使う(1)【リソース構築編】

2025/01/26に公開

はじめに

昨年夏くらいにAzure Databricksを初めて触って、その時はBicepで構築したのですが、最近マイブームのTerraform版を作りました。

https://github.com/katakura/azure-databricks-private-network/tree/zenn01

今回やったこと

今回の記事執筆時点では、とりあえず以下の事ができています。

  • 仮想ネットワーク、サブネット、NSGを作成
  • Databricksワークスペースを仮想ネットワーク内に配置

Databricksワークスペースを仮想ネットワーク内に配置する事で、他のAzure PaaSに対してもプライベートリンクでより安全に接続できるようになるでしょう。

こちらを読んで興味のあるかたは、続編の記事もご覧ください。

https://zenn.dev/yotan/articles/fc66b9e5092ef7

https://zenn.dev/yotan/articles/998c5eafa335f7

使い方

クライアントPCにはAzure CLIとterraformはインストールしておきましょう。

https://learn.microsoft.com/cli/azure/install-azure-cli?WT.mc_id=AZ-MVP-5002499

https://learn.microsoft.com/azure/developer/terraform/quickstart-configure?WT.mc_id=AZ-MVP-5002499

まずリポジトリをclone後、terraform.tfvars.sampleterraform.tfvars にコピーして、内容を適度に書き換えます。

続いて、以下のコマンドイメージを参考にデプロイしましょう。

export ARM_SUBSCRIPTION_ID="your subscription id"
az login -t <your tenant id>
az account set -s $ARM_SUBSCRIPTION_ID
terraform plan
terraform apply

はいできました。

img

少しTerraformの説明

仮想ネットワーク関連

仮想ネットワークとサブネットを作成している部分は以下です。

それぞれのサブネットで委任先や適用するNSGが異なるので配列化を断念しています。うまいやりかたないかな。

https://github.com/katakura/azure-databricks-private-network/blob/zenn01/src/variables.tf#L18-L45

https://github.com/katakura/azure-databricks-private-network/blob/zenn01/src/network.tf#L4-L57

NSG関連

ここで定義しているルールは、優先度や名称は固定です。

Azure Databricksに委任されたpublic, privateサブネットに適用しますが以下のURLに書かれている通りのルールを先に登録する必要がありました。

https://learn.microsoft.com/azure/databricks/security/network/classic/vnet-inject?WT.mc_id=AZ-MVP-5002499#network-security-group-rules-for-workspaces

https://github.com/katakura/azure-databricks-private-network/blob/zenn01/src/network.tf#L62-L228

Databricks

Databricksを作成している部分です。

今回は仮想ネットワーク配下に入れることからSKUはpremium固定となります。

https://github.com/katakura/azure-databricks-private-network/blob/zenn01/src/main.tf#L25-L44

とりあえず確認

実はDatabricks中の操作は全然詳しくないのですが、とりあえずServerlessのSQL Warehouseとノートブックからサンプルデータが表示できました。

img

img

今後やること

  • プライベートリンク接続したStorage Account(DFS)を今回の仮想ネットワークに接続して閉域経由でカタログに登録
  • サーバレスのSQL Warehouse等をプライベートリンクで接続
  • Databricksワークスペース自体をプライベートネットワーク経由のみでアクセスさせるように構成してみる
  • もう少しDatabricksそのものの知見を深める

おわりに

とにかく先が長そうな試用なので、記事を分割して少しずつ取り込んでいきたいと思います。

こちらを読んで興味のあるかたは、続編の記事もご覧ください。

https://zenn.dev/yotan/articles/fc66b9e5092ef7

Discussion