使用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。
-
- 在用户的AWS账户中创建跨帐户的IAM角色
-
- 将上述的IAM角色注册到Databricks
-
- 在用户的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。
$ 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 控制台的用户界面上进行查看。
删除工作空间
要删除环境,请执行以下操作(请谨慎执行)。
$ terraform destroy -var-file="secret.tfvars"
...
...
Destroy complete! Resources: 36 destroyed.
解释
资源
我将按照手动部署的顺序搭建以下资源。
-
- 跨帐户IAM角色
-
- S3根存储桶
-
- 自定义VPC
-
- 工作空间
-
- 用于数据写入的存储桶
- 用于集群对S3访问的实例配置文件
请参考代码以获取详细信息。
请在以下内容中以中文本土化。只需要提供一种选项:
参考
-
- Terraform
Provision Databricks workspaces with Terraform (E2)
Databricks – Terraform Provider (docs in databricks.com)
Databricks – Terraform Provider (docs in registry.terraform.io)