使用Terraform在AWS中建立Databricks Workspace的环境

Databricks的工作空间提供了一个独立的环境。因此,根据需求,可能需要同时创建和操作多个工作空间。在这种情况下,通过将Databricks的工作空间作为代码进行管理和自动化,可以使运营更加顺畅。

在Databricks中,作为Labs项目的一部分,提供了Databricks Terraform Provider作为一种工具,以满足运营环境中的需求。
本文档将介绍如何使用Terraform在AWS上构建Databricks工作区的方法。

AWS的Databricks部署配置

Databricks 在 AWS 上使用以下两个层次进行构建。

Control Plane: クラスタ管理、ノートブック、ジョブ管理、Hiveメタストアなど管理系のリソースが含まれる。Databricks管理のAWSアカウント内に配置。

Data Plane: クラスタ実体(EC2インスタンス)、処理実行結果、Spark/Deltaの処理対象データストレージ(S3バケツ)等のリソースが含まれる。ユーザー管理のAWSアカウント内に配置。

要创建和部署Workspace。

    1. 在用户的AWS账户中创建跨帐户的IAM角色

 

    1. 将上述的IAM角色注册到Databricks

 

    1. 在用户的AWS账户中配置网络,如VPC/Subnet等

 

    创建用作DBFS根目录的S3 root bucket,以及创建策略

需要诸如此类的东西。

请阅读Databricks架构概述以获取详细信息。

你可以使用Terraform将这些配置编码并进行运营和管理。

必要的环境

AWS CLIの実行環境
AWS Credential(通常は~/.aws/credentialsに作成される。上記のAWS CLIの実行のため)
Databricks Owner Account: Databricks Console(accounts.cloud.databricks.com)にログインできるユーザー名/パスワード

Terraform実行環境

如下所示的使用方式

下载Terraform模板

下载Terraform模板。

$ curl -O https://sajpstorage.blob.core.windows.net/demo-asset-workshop2021/snippet/db_terraform_example.zip

$ unzip db_terraform_example.zip
$ cd db_terraform_example
$ cd aws
$ ls

README.md       variable.tf
main.tf         secret.tfvars.template

设置与部署相关的参数

在variable.tf中定义了将变量作为配置值进行部署的设置。

变量.tf
* aws_connection_profile: 在使用AWS CLI时要使用的Credential配置文件的名称
* aws_region: 要构建的AWS区域
* cidr_block: 用于构建VPC的网络CIDR
* read_write_s3_buckets: 与Databricks集成的S3存储桶列表(读写)
* read_only_s3_buckets: 与Databricks集成的S3存储桶列表(只读)
* user_prefix: 在工作区资源命名中使用的前缀字符串

編輯文件,並根據需要進行設定。

$ vim variable.tf  (もしくはお使いのテキストエディタで編集)

variable "aws_connection_profile" {
  description  = "The name of the AWS connection profile to use."
  type         = string
  default      = "default"
}

variable "aws_region" {
  description = "The code of the AWS Region to use."
  type        = string
  default     = "ap-northeast-1"
}
...
...

准备证书文件

接下来,我们将根据secret.tfavrs模板创建一个设置文件,包含以下Databricks帐户信息。
请注意,这个文件包含密码等敏感信息,请小心处理。

databricks_account_username: Databricks Consoleにログインする際のメールアドレス

databricks_account_password: Databricks Consoleにログインする際のパスワード

databricks_account_id: DatabircksアカウントのID (Databricks Consoleから確認できます)

可以通过控制台界面左下菜单来查看Databricks的帐户ID。

undefined
$ cp secret.tfvars.template secret.tfvars
$ vim secret.tfvars  (もしくはお使いのテキストエディタで編集)

databricks_account_username = "your_accout_owner@example.com"
databricks_account_password = "xxxxxxxxxxxxxxxxxxx"
databricks_account_id       = "xxxxxxxx-xxxx-xxxxx-xxxxx-xxxxxxxxxxx"

创建工作空间

由于上述是必需的设置项目,因此我们将使用Terraform进行迁移。

只有第一次需要进行Terraform初始化。

$ terraform init

如果没有问题,将执行Terraform来构建环境。
这次执行将在AWS上构建Databricks的Workspace。

$ terraform apply -var-file="secret.tfvars"

...
...
Apply complete! Resources: 36 added, 0 changed, 0 destroyed.

Outputs:

databricks_host = "https://xxxxxxxxx-demo08jmll.cloud.databricks.com"
databricks_instance_profile = "arn:aws:iam::134567891234:instance-profile/shared-instance-profile"
databricks_token = <sensitive>

在这里创建的各种资源也可以通过 Databricks 控制台或 AWS 控制台的用户界面上进行查看。

undefined

删除工作空间

要删除环境,请执行以下操作(请谨慎执行)。

$ terraform destroy -var-file="secret.tfvars"

...
...
Destroy complete! Resources: 36 destroyed.

解释

资源

我将按照手动部署的顺序搭建以下资源。

    1. 跨帐户IAM角色

 

    1. S3根存储桶

 

    1. 自定义VPC

 

    1. 工作空间

 

    1. 用于数据写入的存储桶

 

    用于集群对S3访问的实例配置文件

请参考代码以获取详细信息。

请在以下内容中以中文本土化。只需要提供一种选项:

参考

    • Terraform

Provision Databricks workspaces with Terraform (E2)
Databricks – Terraform Provider (docs in databricks.com)
Databricks – Terraform Provider (docs in registry.terraform.io)

广告
将在 10 秒后关闭
bannerAds