数据博瑞克斯的Terraform提供者
以下是Databricks在AWS上的Terraform提供者的翻译[截至2022年3月21日]。

Databricks Terraform提供程序目前尚未正式获得Databricks或AWS的官方支持。该提供程序由Databricks的现场工程团队进行维护,并且以现状(as-is)的状态提供。没有服务级别协议(SLA),AWS不提供任何保证。如果发现提供程序存在问题,可以通过提报GitHub Issue来进行审核,项目维护者将在时间允许的情况下进行查看。
开始使用
请按以下步骤完成安装和配置Terraform所需的命令行工具。这些工具包括Databricks CLI、Terraform CLI和AWS CLI。在设置完这些工具后,接下来将完成创建用于管理您的Databricks工作区和相关AWS云基础架构的Terraform基础设置的步骤。
请注意,在这个步骤中,需要您作为Databricks管理员能够访问Databricks工作区,能够访问相应的AWS账户,并在该AWS账户上具有适当的权限来执行Terraform。有关详细信息,请参考以下内容:
管理用户和组
AWS网站上的更改IAM用户权限。
-
- 为了使Terraform能够在Databricks帐户中调用Databricks API,需要创建Databricks的个人访问令牌。有关详细信息,请参阅“Authentication using Databricks personal access tokens”。
安装Databricks命令行接口(CLI),并使用databricks configure –token –profile 命令为该个人访问令牌创建连接配置文件,以配置Databricks CLI。请将替换为连接配置文件的唯一名称。有关详细信息,请参阅Databricks CLI的“Set up authentication”和“Connection profiles”部分。
Bash
databricks configure –token –profile
提示
每个个人访问令牌都与Databricks帐户中的特定用户相关联。针对每个希望供Terraform使用的Databricks个人访问令牌,请执行databricks configure –token –profile 命令(将替换为唯一名称)。
安装Terraform CLI。有关详细信息,请参阅Terraform网站的Download Terraform。
创建由AWS秘密密钥和AWS秘密访问密钥组成的AWS访问密钥。有关详细信息,请参阅AWS网站的Managing access keys (console)。
安装AWS CLI,并使用aws configure –profile 命令配置AWS CLI以使用AWS访问密钥。请将替换为您希望为此连接配置文件使用的唯一名称。有关详细信息,请参阅AWS网站的Installing, updating, and uninstalling the AWS CLI version 2和Quick configuration with aws configure。
Bash
aws configure –profile
提示
每个AWS访问密钥都与AWS帐户中特定的IAM用户相关联。对于每个希望Terraform使用的AWS访问密钥,请执行aws configure –profile 命令(将替换为唯一名称)。
在终端中创建一个空目录并进入其中。(每个不同的Terraform配置文件集需要自己的目录)例如,mkdir terraform_demo && cd terraform_demo。
Bash
mkdir terraform_demo && cd terraform_demo
在空目录中创建名为main.tf的文件。将以下内容添加到该文件中,并保存文件。
variable “aws_connection_profile” {
description = “The name of the AWS connection profile to use.”
type = string
default = “”
}
variable “aws_region” {
description = “The code of the AWS Region to use.”
type = string
default = “”
}
variable “databricks_connection_profile” {
description = “The name of the Databricks connection profile to use.”
type = string
default = “”
}
terraform {
required_providers {
aws = {
source = “hashicorp/aws”
version = “~> 3.27”
}
databricks = {
source = “databrickslabs/databricks”
}
}
}
provider “aws” {
profile = var.aws_connection_profile
region = var.aws_region
}
provider “databricks” {
profile = var.databricks_connection_profile
}
替换main.tf文件中的以下值并保存。
将替换为步骤5中创建的AWS连接配置文件名。
将替换为您希望在Terraform中使用的AWS区域的代码(例如us-west-2)。
将替换为步骤2中创建的Databricks连接配置文件名。
通过执行terraform init命令对包含main.tf文件的工作目录进行初始化。有关详细信息,请参阅Terraform网站的Command: init。
Bash
terraform init
Terraform将下载aws和databricks提供程序,并将它们安装在当前工作目录的名为.terraform的隐藏子目录中。terraform init命令会显示已安装的提供程序的版本。此外,Terraform还会创建一个名为terraform.tfstate的文件,用于将数据写入其中。要创建资源,请按照示例配置继续进行下一步,或者执行两者以指定要创建的资源,然后再次运行terraform apply。Terraform会将管理的资源的ID和属性存储在此terraform.tfstate文件中,以便稍后可以更新或删除这些资源。
通过执行terraform apply命令将更改应用到所需的配置状态。有关详细信息,请参阅Terraform网站的Command: apply。
Bash
terraform apply
由于main.tf文件尚未指定任何资源,因此输出将显示Apply complete! Resources: 0 added, 0 changed, 0 destroyed。此外,Terraform会将数据写入名为terraform.tfstate的文件中。要创建资源,请继续进行下一步的示例配置,或使用两者来指定要创建的资源,然后重新运行terraform apply。Terraform将为您的项目存储在terraform.tfstate文件中的资源ID和属性,以便以后可以更新或删除这些资源。
样本设置
请按照以下步骤完成创建一个样例Terraform配置,用于在现有的Databricks工作空间中创建笔记本和用于运行该笔记本的作业。
-
- 在创建main.tf文件后,将以下代码添加到main.tf文件的末尾。
“`
variable “resource_prefix” {
description = “The prefix to use when naming the notebook and job”
type = string
default = “terraform-demo”
}
variable “email_notifier” {
description = “The email address to send job status to”
type = list(string)
default = [“”]
}
// 获取调用Databricks API的Databricks用户的信息(与”databricks_connection_profile”关联的用户)。
data “databricks_current_user” “me” {}
// 创建一个简单的示例笔记本。将它存储在Databricks当前用户的文件夹的子文件夹中。该笔记本包含以下基本的Python Spark代码。
resource “databricks_notebook” “this” {
path = “${data.databricks_current_user.me.home}/Terraform/${var.resource_prefix}-notebook.ipynb”
language = “PYTHON”
content_base64 = base64encode(<<-EOT
# created from ${abspath(path.module)}
display(spark.range(10))
EOT
)
}
// 创建一个运行示例笔记本的作业。该作业将创建一个用于运行的群集。该群集将使用可用的最小节点类型,并运行最新版本的Spark。
// 获取可用于群集的最小节点类型。仅从具有本地存储的可用节点类型中选择。
data “databricks_node_type” “smallest” {
local_disk = true
}
// 获取用于群集的最新Spark版本。
data “databricks_spark_version” “latest” {}
// 创建作业,通过邮件通知作业的成功或失败。
resource “databricks_job” “this” {
name = “${var.resource_prefix}-job-${data.databricks_current_user.me.alphanumeric}”
new_cluster {
num_workers = 1
spark_version = data.databricks_spark_version.latest.id
node_type_id = data.databricks_node_type.smallest.id
}
notebook_task {
notebook_path = databricks_notebook.this.path
}
email_notifications {
on_success = var.email_notifier
on_failure = var.email_notifier
}
}
// 打印笔记本的URL。
output “notebook_url” {
value = databricks_notebook.this.url
}
// 打印作业的URL。
output “job_url” {
value = databricks_job.this.url
}
将替换为您的邮箱地址,并保存文件。
运行terraform apply命令。
确保笔记本和作业已创建。在terraform apply命令的输出中,将显示notebook_url和job_url的URL,访问这些URL。
执行作业。在Jobs页面上点击Run Now。作业完成后,检查您的邮箱。
完成此示例后,运行terraform destroy命令以从Databricks工作区中删除笔记本和作业。
确保笔记本和作业已删除。刷新笔记本和Jobs页面,确认资源未找到的消息是否显示。
下一步 (xià yī bù)
-
- 创建与工作区相关的基础设施。
- 管理Databricks工作区资源。
故障排除
关于Terraform的固有支持,请参考HashiCorp Discuss网站上的最新Terraform主题。关于Databricks Terraform提供程序的特定问题,请查看databrickslabs/terraform-provider-databricks的GitHub存储库的问题。
追加资源
-
- Tutorial: Create a workspace with the Databricks Terraform provider
-
- TerraformレジストリウェブサイトのDatabricks Provider Documentation
TerraformウェブサイトのTerraform Documentation
Databricks免费试用
Databricks 免费试用