磚起程拓殖的提供者
HashiCorp起程拓殖是一個流行的開源工具,用於跨多個雲提供商創建安全和可預測的雲基礎設施。您可以使用磚起程拓殖的提供者使用一個靈活、強大的工具來管理您的Databricks工作區和相關的雲基礎設施。Databricks Terraform提供程序的目標是支持所有Databricks REST api,支持部署和管理數據平台的最複雜方麵的自動化。Beplay体育安卓版本Databricks客beplay体育app下载地址戶使用Databricks Terraform提供程序來部署和管理集群和作業,提供Databricks工作空間,並配置數據訪問。
開始
完成以下步驟,安裝和配置terrform需要操作的命令行工具。這些工具包括磚CLI,起程拓殖CLI,AWS CLI.在設置這些工具之後,完成創建基本terrform配置的步驟,您可以稍後使用該配置來管理Databricks工作空間和相關的AWS雲基礎設施。
請注意
本過程假設您以Databricks管理員的身份訪問Databricks工作空間、訪問相應的AWS帳戶以及希望terracform在該AWS帳戶中執行的適當權限。欲了解更多信息,請參見以下內容:
修改IAM用戶權限在AWS網站上
創建Databricks個人訪問令牌,以允許terrform在Databricks帳戶內調用Databricks api。有關詳細信息,請參見使用Databricks個人訪問令牌進行身份驗證.
安裝Databricks命令行界麵(CLI),然後使用Databricks個人訪問令牌配置Databricks CLI
磚配置——令牌——簡介<概要名稱>
命令為Databricks個人訪問令牌創建連接配置文件。取代<概要名稱>
使用此連接配置文件的惟一名稱。有關詳細信息,請參見中“設置身份驗證”和“連接配置文件”小節磚CLI.Databricks配置——token——profile <配置文件名>
提示
每個Databricks個人訪問令牌都與Databricks帳戶中的特定用戶相關聯。運行
磚配置——令牌——簡介<概要名稱>
命令(替換<概要名稱>
為您希望terrraform使用的每個Databricks個人訪問令牌提供一個惟一的名稱)。安裝Terraform CLI。有關詳細信息,請參見下載起程拓殖在Terraform網站上。
創建AWS訪問密鑰,它由AWS密鑰和AWS密鑰組成。有關詳細信息,請參見管理訪問鍵(控製台)在AWS網站上。
安裝AWS命令行,然後使用AWS訪問密鑰配置AWS命令行
aws配置——簡介<概要名稱>
命令。取代<概要名稱>
使用此連接配置文件的惟一名稱。有關詳細信息,請參見安裝、更新和卸載AWS CLI版本2而且使用aws配置進行快速配置在AWS網站上。Aws配置——配置文件<配置文件名稱>
提示
每個AWS接入密鑰都與特定的IAM用戶關聯在一個AWS帳戶中。運行
aws配置——簡介<概要名稱>
命令(替換<概要名稱>
使用惟一名稱)為您希望terrraform使用的每個AWS訪問鍵設置。該過程使用AWS CLI以及默認位置的共享憑證/配置文件進行身份驗證。有關其他身份驗證選項,請參見身份驗證在terrform注冊網站上。
在終端中創建一個空目錄,然後切換到該目錄。(每一組terrform配置文件都必須位於自己的目錄中。)例如:
mkdirterraform_demo& &cdterraform_demo
.mkdir terraform_demo& &cdterraform_demo
在這個空目錄中,創建一個名為
main.tf
.將以下內容添加到該文件中,然後保存該文件。提示
如果您使用Visual Studio Code,則HashiCorp起程拓殖Visual Studio Code擴展為terrraform文件添加了編輯功能,如語法高亮顯示、智能感知、代碼導航、代碼格式化、模塊資源管理器等。
變量“aws_connection_profile”{描述= " AWS連接配置文件的名稱使用。”類型= string默認= < AWS連接配置文件名稱>”}變量“aws_region”={描述的代碼AWS地區使用。”類型=字符串的默認= " < > AWS地區代碼”}變量“databricks_connection_profile”={描述“磚連接配置文件的名稱使用。”類型= string默認= <磚連接配置文件名稱>”}起程拓殖{required_providers {AWS = {Source = "hashicorp/aws" version = "~> 3.27"} databricks = {Source = "databricks/databricks"}}} provider "aws" {profile = var.aws_connection_profile region = var.aws_region} provider "databricks" {profile = var.databricks_connection_profile}
文件中替換以下值
main.tf
文件,然後保存文件:取代
< AWS連接配置文件名稱>
使用您在前麵的步驟5中創建的AWS連接配置文件的名稱。取代
< AWS地區代碼>
使用希望terrraform使用的AWS Region的代碼(例如,us-west-2
).取代
<磚連接配置文件名稱>
使用前麵在步驟2中創建的Databricks連接配置文件的名稱。
初始化包含
main.tf
文件,運行起程拓殖初始化
命令。有關更多信息,請參見命令:初始化在Terraform網站上。起程拓殖init
起程拓殖下載
aws
而且磚
提供程序並將它們安裝在當前工作目錄的隱藏子目錄中,名為.terraform
.的起程拓殖初始化
命令打印出所安裝的提供程序的版本。Terraform還創建一個名為.terraform.lock.hcl
它指定所使用的確切的提供程序版本,以便您可以控製何時要更新用於項目的提供程序。應用所需的更改,以達到所需的配置狀態
起程拓殖應用
命令。有關更多信息,請參見命令:在Terraform網站上。起程拓殖應用
中尚未指定任何資源
main.tf
文件,輸出為應用完成了!資源:0補充說,0改變,0摧毀。
此外,Terraform將數據寫入一個名為terraform.tfstate
.要創建資源,請繼續示例配置,下一個步驟,或同時指定要創建的所需資源,然後運行起程拓殖應用
再次命令。Terraform將其管理的資源的id和屬性存儲在此terraform.tfstate
文件,以便它可以繼續更新或銷毀這些資源。
示例配置
完成以下過程,在現有的Databricks工作空間中創建一個示例terrform配置,該配置創建一個筆記本和一個作業來運行該筆記本。
請注意
下麵的terrform配置示例隻與現有的Databricks工作空間交互。因此,要運行這個示例,不需要配置AWS CLI,也不需要配置您的main.tf
文件需要包含變量aws_connection_profile
,aws_region
,或者是aws
提供者。
在最後
main.tf
創建的文件開始,添加以下代碼:變量"resource_prefix" {description = "命名筆記本和作業時使用的前綴" type = string default = "terraform-demo"}變量"email_notifier" {description = "發送作業狀態的電子郵件地址" type = list(string) default =["<您的電子郵件地址>"]}//獲取調用Databricks API的Databricks用戶的信息(與" databrics_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. resource "databricks_notebook" "this" {path = "${data.databricks_current_user.me.home}/Terraform/${var.resource_prefix} . "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 } // Get the latest Spark version to use for the cluster. data "databricks_spark_version" "latest" {} // Create the job, emailing notifiers about job success or failure. 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 } } // Print the URL to the notebook. output "notebook_url" { value = databricks_notebook.this.url } // Print the URL to the job. output "job_url" { value = databricks_job.this.url }
取代
<您的電子郵件地址>
與您的電子郵件地址,並保存文件。運行
起程拓殖應用
.的輸出中,驗證筆記本和作業是否已創建
起程拓殖應用
命令,找到notebook_url
而且job_url
然後去找他們。運行作業:在工作頁麵,點擊現在運行.工作完成後,檢查你的電子郵件收件箱。
當您完成這個示例時,通過運行從Databricks工作區中刪除筆記本和作業
起程拓殖摧毀
.驗證筆記本和作業是否已刪除:刷新筆記本和工作頁,以顯示無法找到資源的消息。
下一個步驟
管理工作區資源為Databricks工作空間。
故障排除
請注意
有關特定於terrraform的支持,請參閱最新起程拓殖的話題在HashiCorp討論網站上有關特定於Databricks Terraform Provider的問題,請參見問題在databrickslabs / terraform-provider-databricksGitHub庫。
錯誤:安裝提供程序失敗
問題:如果您沒有辦理登機手續terraform.lock.hcl
文件保存到版本控製係統,然後運行起程拓殖初始化
命令,顯示如下信息:失敗的來安裝提供者
.額外的輸出可能包括類似於以下的消息:
當安裝databrickslab /databricks: v1.0.0: checksum list沒有SHA-256哈希為“https://github.com/databricks/terraform-provider-databricks/releases/download/v1.0.0/terraform-provider-databricks_1.0.0_darwin_amd64.zip”時發生錯誤
導致:您的Terraform配置引用了過時的Databricks Terraform提供程序。
解決方案:
取代
databrickslabs /磚
與磚/磚
在你所有的.tf
文件。文件所在的父文件夾中運行以下Python命令,可自動進行這些替換
.tf
文件更新:python3-c“$ (curl - ls https://dbricks.co/updtfns)”
運行以下Terraform命令,然後在出現提示時批準更改:
Terraform state replace-provider databrickslab /databricks databricks/databricks
有關此命令的信息,請參見命令:國家replace-provider在Terraform文檔中。
運行以下Terraform命令驗證更改:
起程拓殖init
錯誤:查詢可用的提供程序包失敗
問題:如果您沒有辦理登機手續terraform.lock.hcl
文件保存到版本控製係統,然後運行起程拓殖初始化
命令,顯示如下信息:失敗的來查詢可用提供者包
.
導致:您的Terraform配置引用了過時的Databricks Terraform提供程序。
解決方案中的解決方案說明錯誤:安裝提供程序失敗.
附加的例子
控製對集群的訪問:參見為您的工作空間啟用集群訪問控製而且集群訪問控製
控製對作業的訪問:參見為工作空間啟用作業訪問控製而且工作訪問控製
控製對池的訪問:參見為工作區啟用實例池訪問控製而且池的訪問控製
額外的資源
磚提供者的文檔在terrform注冊網站上
起程拓殖文檔在Terraform網站上
的terraform-databricks-examples在GitHub庫