开始
用户指南
管理指南
参考指南
资源
2022年12月12日更新
给我们反馈
HashiCorp起程拓殖是一种流行的开源工具,用于bob下载地址跨多个云提供商创建安全且可预测的云基础设施。您可以使用Databricks Terraform提供商使用灵活、强大的工具管理您的Databricks工作区和相关的云基础设施。Databricks Terraform提供者的目标是支持所有Databricks REST api,支持自动化部署和管理数据平台的最复杂方面。bob体育客户端下载Databricks客户正在使用Databricks Terraform提供程序来部署和管理集群和作业以及配置数据访问。可以使用Databricks Terraform提供程序来提供Databricks工作区以及AWS提供者为这些工作空间提供所需的AWS资源。
在本节中,您将安装和配置使用Terraform和Databricks Terraform提供程序的需求。然后配置Terraform身份验证。在本节之后,本文提供了一个示例配置您可以尝试在现有的Databricks工作区中提供一个Databricks笔记本、集群和一个在集群上运行笔记本的作业。
若要使用Terraform在AWS帐户级别创建资源,以及使用Databricks Terraform提供程序在Databricks在AWS帐户级别创建资源,您必须具备以下条件:
AWS帐户。
“AWS上的数据库”帐户。
Databricks帐户中的帐户级别的管理员用户。
Terraform命令行。看到下载起程拓殖在Terraform网站上。
以下七个数据库环境变量:
DATABRICKS_USERNAME,设置为Databricks帐户级admin用户名。
DATABRICKS_USERNAME
DATABRICKS_PASSWORD,设置为Databricks帐户级admin用户的密码值。
DATABRICKS_PASSWORD
DATABRICKS_ACCOUNT_ID,设置为“Databricks”帐号的ID。你可以在你的Databricks帐户控制台.
DATABRICKS_ACCOUNT_ID
TF_VAR_databricks_account_id,也设置为您的Databricks帐户ID的值。
TF_VAR_databricks_account_id
AWS_ACCESS_KEY_ID,设置为AWS用户的访问密钥ID的值。看到编程访问在AWS通用参考中。
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY,设置为AWS用户的秘密访问密钥的值。看到编程访问在AWS通用参考中。
AWS_SECRET_ACCESS_KEY
AWS_REGION,设置为您的Databricks帐户的AWS区域代码的值。看到区域端点在AWS通用参考中。
AWS_REGION
请注意
作为安全最佳实践,当使用自动化工具、系统、脚本和应用程序进行身份验证时,Databricks建议您使用属于的访问令牌服务主体而不是工作区用户。要为服务主体创建访问令牌,请参见管理服务主体的访问令牌.
要设置这些环境变量,请参阅操作系统的文档。
要使用Databricks Terraform提供程序在Databricks工作空间级别创建资源,必须具备以下条件:
一个Databricks工作区。
在你的本地开发机器上,你必须有:
下列其中一项:
Databricks命令行界面(Databricks CLI),配置您的Databricks工作空间实例URL例如,https://dbc-1234567890123456.cloud.www.neidfyre.com,以及你的数据库个人访问令牌,通过跑步砖配置——令牌.看到设置CLI而且设置身份验证.
https://dbc-1234567890123456.cloud.www.neidfyre.com
砖配置——令牌
下面两个数据库环境变量:
DATABRICKS_HOST,设置为“数据库”的值工作空间实例URL例如,https://dbc-1234567890123456.cloud.www.neidfyre.com
DATABRICKS_HOST
DATABRICKS_TOKEN,设置为“数据库”的值个人访问令牌.另请参阅管理个人访问令牌.
DATABRICKS_TOKEN
在您的Terraform项目中,您必须创建一个配置,以使用您的AWS帐户验证Terraform,并使用Databricks on AWS帐户和Databricks工作区验证Databricks Terraform提供者,如下所示:
在终端中创建一个空目录,然后切换到该目录。(每一组单独的Terraform配置文件必须在其自己的目录中,该目录称为Terraform项目)。例如:mkdirterraform_demo& &cdterraform_demo.
mkdirterraform_demo& &cdterraform_demo
mkdir terraform_demo& &cdterraform_demo
在这个空目录中,创建一个名为auth.tf.根据您的身份验证方法,将以下内容添加到该文件中,然后保存该文件。
auth.tf
提示
如果使用Visual Studio Code,则HashiCorp起程拓殖Visual Studio Code扩展为Terraform文件添加了编辑功能,如语法高亮显示、智能感知、代码导航、代码格式化、模块资源管理器等等。
要使用环境变量在AWS帐户级别进行身份验证,并在AWS帐户级别使用Databricks CLI配置概要文件在Databricks工作空间级别进行身份验证,请添加以下内容。
变量“databricks_connection_profile”{}起程拓殖{required_providers{砖={源=“砖/砖”}aws={源=“hashicorp / aws”}}}提供者“aws”{}#使用Databricks CLI认证。提供者“砖”{配置文件=var.databricks_connection_profile}
若要使用环境变量在AWS帐户级别、AWS帐户级别的Databricks和Databricks工作区级别进行身份验证,请添加以下内容:
起程拓殖{required_providers{砖={源=“砖/砖”}aws={源=“hashicorp / aws”}}}提供者“aws”{}使用环境变量进行身份验证。提供者“砖”{}
如果希望仅在Databricks工作区级别创建资源,则可以删除aws阻止前面的任何一个required_providers声明以及提供者“aws”声明。
aws
required_providers
提供者“aws”
如果使用Databricks CLI配置文件在Databricks工作空间级别进行身份验证,请创建另一个名为auth.auto.tfvars,在文件中添加以下内容,并根据需要更改要使用的配置文件的名称:
auth.auto.tfvars
databricks_connection_profile=“默认”
* .auto.tfvars文件使您能够从代码中单独指定变量值。这使你的.tf文件在不同的使用场景中更加模块化和可重用。
* .auto.tfvars
.tf
初始化包含auth.tf通过运行起程拓殖初始化命令。有关更多信息,请参见命令:初始化在Terraform网站上。
起程拓殖初始化
起程拓殖init
Terraform下载指定的提供程序,并将它们安装到当前工作目录的隐藏子目录中.terraform.的起程拓殖初始化命令输出安装的提供程序版本。Terraform还创建了一个名为.terraform.lock.hcl它指定使用的确切提供程序版本,以便您可以控制何时要更新项目使用的提供程序。
.terraform
.terraform.lock.hcl
命令检查项目是否配置正确起程拓殖计划命令。如果有错误,请修复后重新执行命令。有关更多信息,请参见命令:计划在Terraform网站上。
起程拓殖计划
命令应用所需的更改,以达到所需的配置状态起程拓殖应用命令。有关更多信息,请参见命令:在Terraform网站上。
起程拓殖应用
类型中尚未指定任何资源auth.tf文件,输出为应用完成了!资源:0补充说,0改变,0摧毁。此外,Terraform将数据写入一个名为terraform.tfstate.若要创建资源,请继续示例配置,下一个步骤,或同时指定所需的资源来创建,然后运行起程拓殖应用再次命令。Terraform将其管理的资源的id和属性存储在此文件中terraform.tfstate文件,这样它就可以更新或销毁这些资源。
应用完成了!资源:0补充说,0改变,0摧毁。
terraform.tfstate
本节提供了一个示例配置,您可以在现有的Databricks工作空间中尝试配置Databricks笔记本、集群和在集群上运行笔记本的作业。它假设您已经设置了需求,并创建了一个Terraform项目,并使用上一节所述的Terraform身份验证配置该项目。
创建另一个名为me.tf在你创建的目录里配置Terraform认证,并添加以下代码。这个文件获取当前用户(你)的信息:
me.tf
#检索当前用户的信息。数据“databricks_current_user”“我”{}
创建另一个名为notebook.tf,并添加以下代码。这个文件代表笔记本。
notebook.tf
变量“notebook_subdirectory”{描述="用于存储笔记本的子目录的名称。"类型=字符串默认的=“起程拓殖”}变量“notebook_filename”{描述=“笔记本的文件名。”类型=字符串}变量“notebook_language”{描述=“笔记本的语言。”类型=字符串}资源“databricks_notebook”“这”{路径=" ${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}"语言=var.notebook_language源=”。/ ${var.notebook_filename}"}输出“notebook_url”{价值=databricks_notebook.这.url}
创建另一个名为notebook.auto.tfvars,并添加以下代码。该文件指定笔记本的属性。
notebook.auto.tfvars
notebook_subdirectory=“起程拓殖”notebook_filename=“notebook-getting-started.py”notebook_language=“巨蟒”
创建另一个名为notebook-getting-started.py,并添加以下代码。这个文件表示笔记本的内容。
notebook-getting-started.py
显示(火花.范围(10))
创建另一个名为cluster.tf,并添加以下代码。该文件表示集群。
cluster.tf
变量“cluster_name”{描述=“集群的名称。”类型=字符串默认的=“我的集群”}变量“cluster_autotermination_minutes”{描述="多少分钟后由于不活动而自动终止"类型=数量默认的=60}变量“cluster_num_workers”{描述=“工人的数量。”类型=数量默认的=1}#创建数量最小的集群#允许的资源。数据“databricks_node_type”“最小”{local_disk=真正的}使用最新的Databricks Runtime#长期支持(LTS)版本。数据“databricks_spark_version”“latest_lts”{long_term_support=真正的}资源“databricks_cluster”“这”{cluster_name=var.cluster_namenode_type_id=数据.databricks_node_type.最小的.idspark_version=数据.databricks_spark_version.latest_lts.idautotermination_minutes=var.cluster_autotermination_minutesnum_workers=var.cluster_num_workers}输出“cluster_url”{价值=databricks_cluster.这.url}
创建另一个名为cluster.auto.tfvars,并添加以下代码。该文件指定集群的属性。
cluster.auto.tfvars
cluster_name=“我的集群”cluster_autotermination_minutes=60cluster_num_workers=1
创建另一个名为job.tf,并添加以下代码。该文件表示在集群上运行笔记本的作业。
job.tf
变量“job_name”{描述=“工作的名字。”类型=字符串默认的=“我的工作”}资源“databricks_job”“这”{的名字=var.job_nameexisting_cluster_id=databricks_cluster.这.cluster_idnotebook_task{notebook_path=databricks_notebook.这.路径}email_notifications{on_success=[数据.databricks_current_user.我.user_name]on_failure=[数据.databricks_current_user.我.user_name]}}输出“job_url”{价值=databricks_job.这.url}
创建另一个名为job.auto.tfvars,并添加以下代码。该文件指定作业的属性。
job.auto.tfvars
job_name=“我的工作”
运行起程拓殖计划.如果有任何错误,请修复它们,然后再次运行该命令。
运行起程拓殖应用.
方法的输出中,验证已创建笔记本、集群和作业:起程拓殖应用命令,找到的urlnotebook_url,cluster_url,job_url,然后去找他们。
notebook_url
cluster_url
job_url
运行作业:在工作页面,点击现在运行.工作结束后,检查你的电子邮件收件箱。
当您完成这个示例时,通过运行从Databricks工作区中删除笔记本、集群和作业起程拓殖摧毁.
起程拓殖摧毁
验证笔记本、集群和作业已被删除:刷新笔记本、集群和工作页的每个页面都显示一条无法找到资源的消息。
创建一个工作区和相关的基础结构.
管理工作空间资源用于Databricks工作区。
有关特定于terrform的支持,请参见最新的Terraform主题HashiCorp讨论网站。有关Databricks Terraform Provider特有的问题,请参见问题在databrickslabs / terraform-provider-databricksGitHub库。
问题:如果您没有办理登机手续terraform.lock.hcl文件到版本控制系统,然后运行起程拓殖初始化命令,显示如下信息:失败的来安装提供者.额外的输出可能包括类似于以下的消息:
terraform.lock.hcl
失败的来安装提供者
安装databrickslab /databricks时出现错误:v1.0.0:校验和列表没有“https://github.com/databricks/terraform-provider-databricks/releases/download/v1.0.0/terraform-provider-databricks_1.0.0_darwin_amd64.zip”的SHA-256哈希
导致:您的Terraform配置引用了过时的Databricks Terraform提供程序。
解决方案:
取代databrickslabs /砖与砖/砖在你们所有的.tf文件。
databrickslabs /砖
砖/砖
的父文件夹中运行以下Python命令,以自动执行这些替换.tf需要更新的文件:
python3-c"$(curl -Ls https://dbricks.co/updtfns)"
运行以下Terraform命令,然后在提示时批准更改:
Terraform state replace-provider databrickslab /databricks databricks/databricks
有关此命令的信息,请参见命令:state replace-provider在Terraform文档中。
执行以下Terraform命令验证更改:
问题:如果您没有办理登机手续terraform.lock.hcl文件到版本控制系统,然后运行起程拓殖初始化命令,显示如下信息:失败的来查询可用提供者包.
失败的来查询可用提供者包
解决方案:请参考错误:安装提供程序失败.
教程:使用Terraform创建一个工作区
使用Terraform创建Databricks工作区
使用Terraform管理Databricks工作区
创建集群
创建集群、笔记本和作业
控制对集群的访问:参见为您的工作区启用集群访问控制而且集群访问控制
控制对作业的访问:参见为工作空间启用作业访问控制而且作业访问控制
控制对池的访问:参见为工作空间启用实例池访问控制而且池访问控制
控制对个人访问令牌的访问
控制笔记本的访问权限
配置Databricks Repos
控制对秘密的访问
配置使用日志传递
控制对Databricks SQL表的访问
使用Databricks Terraform提供程序实现CI/CD管道来部署Databricks资源
创建一个Databricks SQL仪表板示例
配置AWS IAM角色及其集群附件
创建启用AWS graviton的集群
Databricks提供商文档在Terraform注册网站上
起程拓殖文档在Terraform网站上
的terraform-databricks-examples仓库在GitHub