开始
加载和管理数据
处理数据
政府
参考和资源
2023年2月3日更新
给我们反馈
HashiCorp起程拓殖是一种流行的开源工具,用于bob下载地址跨多个云提供商创建安全且可预测的云基础设施。您可以使用Databricks Terraform提供商使用灵活、强大的工具管理您的Databricks工作区和相关的云基础设施。Databricks Terraform提供者的目标是支持所有Databricks REST api,支持自动化部署和管理数据平台的最复杂方面。bob体育客户端下载Databricks客户正在使用Databricks Terraform提供程序来部署和管理集群和作业以及配置数据访问。可以使用Databricks Terraform提供程序来提供Databricks工作区以及谷歌云平台提供商bob体育客户端下载为这些工作空间提供所需的谷歌云平台资源。bob体育客户端下载
在本节中,您将安装和配置使用Terraform和Databricks Terraform提供程序的需求。然后配置Terraform身份验证。在本节之后,本文提供了一个示例配置您可以尝试在现有的Databricks工作区中提供一个Databricks笔记本、集群和一个在集群上运行笔记本的作业。
若要使用Terraform在谷歌云帐户级别创建资源,以及使用Databricks Terraform提供程序在谷歌云帐户级别创建资源,您必须具备以下条件:
谷歌云帐户。
帐户中有一个谷歌云项目。
使用Databricks Terraform提供程序1.8.0或更高版本。始终使用最新版本的提供程序。
一个谷歌云账号的数据在项目中。
一个谷歌账户和一个谷歌业务帐号需要的权限.
在你的本地开发机器上,你必须有:
Terraform命令行。看到下载起程拓殖在Terraform网站上。
的谷歌云SDK,通过Gcloud auth应用程序-default login -project =命令,<项目id >为目标谷歌云项目的ID。详情请参见安装谷歌Cloud SDK而且授权gcloud命令行在谷歌云网站上。
<项目id >
要使用Databricks Terraform提供程序在Databricks工作空间级别创建资源,必须具备以下条件:
一个Databricks工作区。
一个砖个人访问令牌,以允许Terraform在Databricks工作区中调用Databricks api。另请参阅管理个人访问令牌.
下列其中一项:
Databricks命令行界面(Databricks CLI),配置您的Databricks工作空间实例URL例如,https://1234567890123456.7.gcp.www.neidfyre.com,以及你的数据库个人访问令牌,通过跑步砖配置——令牌.看到设置CLI而且设置身份验证.
https://1234567890123456.7.gcp.www.neidfyre.com
砖配置——令牌
下面两个数据库环境变量:
DATABRICKS_HOST,设置为“数据库”的值工作空间实例URL例如,https://1234567890123456.7.gcp.www.neidfyre.com
DATABRICKS_HOST
DATABRICKS_TOKEN,设置为“数据库”的值个人访问令牌.另请参阅管理个人访问令牌.
DATABRICKS_TOKEN
要设置这些环境变量,请参阅操作系统的文档。
在您的Terraform项目中,您必须创建一个配置,以使用您的谷歌云帐户验证Terraform,并使用谷歌云帐户上的Databricks和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文件添加了编辑功能,如语法高亮显示、智能感知、代码导航、代码格式化、模块资源管理器等等。
要使用谷歌Cloud SDK在谷歌Cloud帐户级别进行身份验证,并在谷歌Cloud帐户级别使用Databricks进行身份验证,并使用Databricks CLI配置概要在Databricks工作区级别进行身份验证,请添加以下内容:
变量“databricks_connection_profile”{}起程拓殖{required_providers{砖={源=“砖/砖”}谷歌={源=“hashicorp /谷歌”}}}提供者“谷歌”{}#使用Databricks CLI认证。提供者“砖”{配置文件=var.databricks_connection_profile}
若要使用谷歌Cloud SDK在谷歌Cloud帐户级别进行身份验证,并在谷歌Cloud帐户级别使用Databricks进行身份验证,并使用环境变量在Databricks工作空间级别进行身份验证,请添加以下内容:
起程拓殖{required_providers{砖={源=“砖/砖”}谷歌={源=“hashicorp /谷歌”}}}提供者“谷歌”{}使用环境变量进行身份验证。提供者“砖”{}
如果希望仅在Databricks工作区级别创建资源,则可以删除谷歌阻止前面的任何一个required_providers声明以及提供者“谷歌”声明。
谷歌
required_providers
提供者“谷歌”
如果使用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管理Databricks工作区
创建集群
创建集群、笔记本和作业
控制对集群的访问:参见为您的工作区启用集群访问控制而且集群访问控制
控制对作业的访问:参见为工作空间启用作业访问控制而且作业访问控制
控制对池的访问:参见为工作空间启用实例池访问控制而且池访问控制
控制对个人访问令牌的访问
控制笔记本的访问权限
配置Databricks Repos
控制对秘密的访问
配置使用日志传递
控制对Databricks SQL表的访问
使用Databricks Terraform提供程序实现CI/CD管道来部署Databricks资源
创建一个Databricks SQL仪表板示例
Databricks提供商文档在Terraform注册网站上
起程拓殖文档在Terraform网站上
的terraform-databricks-examples仓库在GitHub