Databricks Terraform 提供者

HashiCorp Terraform 是熱門的 開放原始碼 工具,可跨數個雲端提供者建立安全且可預測的雲端基礎結構。 您可以使用 Databricks Terraform 提供者 ,使用彈性且功能強大的工具來管理 Azure Databricks 工作區和相關聯的雲端基礎結構。 Databricks Terraform 提供者的目標是支援所有 Databricks REST API,支援部署和管理數據平臺最複雜層面的自動化。 Databricks 客戶會使用 Databricks Terraform 提供者來部署和管理叢集和作業,以及設定數據存取。 您可以使用 Azure 提供者 來布建 Azure Databricks 工作區。

開始使用

在本節中,您會在本機開發計算機上安裝和設定使用 Terraform 和 Databricks Terraform 提供者的需求。 接著,您可以設定 Terraform 驗證。 在本節之後,本文提供 範例組態 ,您可以嘗試布建 Azure Databricks Notebook、叢集,以及可在現有 Azure Databricks 工作區中的叢集上執行筆記本的作業。

需求

  1. 您必須擁有 Terraform CLI。 請參閱 在 Terraform 網站上下載 Terraform

  2. 您必須有 Terraform 專案。 在您的終端機中,建立空的目錄,然後切換至該目錄。 (每個個別的 Terraform 組態檔集合都必須位於它自己的目錄中,這稱為 Terraform 專案。例如: mkdir terraform_demo && cd terraform_demo

    mkdir terraform_demo && cd terraform_demo
    

    在 Terraform 專案中的一或多個組態檔中包含專案的 Terraform 組態。 如需組態檔語法的相關信息,請參閱 Terraform 網站上的 Terraform 語言檔

  3. 您必須將 Databricks Terraform 提供者的相依性新增至 Terraform 專案。 將下列內容新增至 Terraform 專案中的其中一個組態檔:

    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
  4. 您必須設定 Terraform 項目的驗證。 請參閱 Databricks Terraform 提供者檔中的驗證

範例設定

本節提供範例組態,您可以在現有的 Azure Databricks 工作區中,嘗試布建 Azure Databricks Notebook、叢集,以及在叢集上執行筆記本的工作。 它假設您已設定 需求,以及建立 Terraform 專案,並使用 Terraform 驗證設定專案,如上一節所述。

  1. 在 Terraform 專案中建立名為 me.tf 的檔案,並新增下列程式代碼。 此檔案會取得目前使用者的相關信息(您):

    # Retrieve information about the current user.
    data "databricks_current_user" "me" {}
    
  2. 建立名為 notebook.tf的另一個檔案,並新增下列程序代碼。 此檔案代表筆記本。

    variable "notebook_subdirectory" {
      description = "A name for the subdirectory to store the notebook."
      type        = string
      default     = "Terraform"
    }
    
    variable "notebook_filename" {
      description = "The notebook's filename."
      type        = string
    }
    
    variable "notebook_language" {
      description = "The language of the notebook."
      type        = string
    }
    
    resource "databricks_notebook" "this" {
      path     = "${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}"
      language = var.notebook_language
      source   = "./${var.notebook_filename}"
    }
    
    output "notebook_url" {
     value = databricks_notebook.this.url
    }
    
  3. 建立名為 notebook.auto.tfvars的另一個檔案,並新增下列程序代碼。 此檔案會指定筆記本的屬性。

    notebook_subdirectory = "Terraform"
    notebook_filename     = "notebook-getting-started.py"
    notebook_language     = "PYTHON"
    
  4. 建立名為 notebook-getting-started.py的另一個檔案,並新增下列程序代碼。 此檔案代表筆記本的內容。

    display(spark.range(10))
    
  5. 建立名為 cluster.tf的另一個檔案,並新增下列程序代碼。 此檔案代表叢集。

    variable "cluster_name" {
      description = "A name for the cluster."
      type        = string
      default     = "My Cluster"
    }
    
    variable "cluster_autotermination_minutes" {
      description = "How many minutes before automatically terminating due to inactivity."
      type        = number
      default     = 60
    }
    
    variable "cluster_num_workers" {
      description = "The number of workers."
      type        = number
      default     = 1
    }
    
    # Create the cluster with the "smallest" amount
    # of resources allowed.
    data "databricks_node_type" "smallest" {
      local_disk = true
    }
    
    # Use the latest Databricks Runtime
    # Long Term Support (LTS) version.
    data "databricks_spark_version" "latest_lts" {
      long_term_support = true
    }
    
    resource "databricks_cluster" "this" {
      cluster_name            = var.cluster_name
      node_type_id            = data.databricks_node_type.smallest.id
      spark_version           = data.databricks_spark_version.latest_lts.id
      autotermination_minutes = var.cluster_autotermination_minutes
      num_workers             = var.cluster_num_workers
    }
    
    output "cluster_url" {
     value = databricks_cluster.this.url
    }
    
  6. 建立名為 cluster.auto.tfvars的另一個檔案,並新增下列程序代碼。 此檔案會指定叢集的屬性。

    cluster_name                    = "My Cluster"
    cluster_autotermination_minutes = 60
    cluster_num_workers             = 1
    
  7. 建立名為 job.tf的另一個檔案,並新增下列程序代碼。 此檔案代表在叢集上執行筆記本的作業。

    variable "job_name" {
      description = "A name for the job."
      type        = string
      default     = "My Job"
    }
    
    resource "databricks_job" "this" {
      name = var.job_name
      existing_cluster_id = databricks_cluster.this.cluster_id
      notebook_task {
        notebook_path = databricks_notebook.this.path
      }
      email_notifications {
        on_success = [ data.databricks_current_user.me.user_name ]
        on_failure = [ data.databricks_current_user.me.user_name ]
      }
    }
    
    output "job_url" {
      value = databricks_job.this.url
    }
    
  8. 建立名為 job.auto.tfvars的另一個檔案,並新增下列程序代碼。 此檔案會指定作業的屬性。

    job_name = "My Job"
    
  9. 執行 terraform plan。 如果有任何錯誤,請加以修正,然後再次執行命令。

  10. 執行 terraform apply

  11. 確認已建立筆記本、叢集和作業:在命令的terraform apply輸出中,尋找、 cluster_urljob_url的 URLnotebook_url,然後移至它們。

  12. 執行作業:在 [作業 ] 頁面上,按兩下 [ 立即執行]。 工作完成後,請檢查您的電子郵件收件匣。

  13. 當您完成此範例時,請執行 terraform destroy,從 Azure Databricks 工作區刪除筆記本、叢集和作業。

    注意

    如需 、 terraform apply和 命令的詳細資訊terraform plan,請參閱 Terraform 檔中的 Terraform CLI 檔terraform destroy

  14. 確認筆記本、叢集和作業已刪除:重新整理筆記本、叢集和 作業 頁面,以顯示找不到資源的訊息。

下一步

  1. 建立 Azure Databricks 工作區
  2. 管理 Azure Databricks 工作區的工作區資源

疑難排解

注意

如需 Terraform 特定支援,請參閱 HashiCorp 討論網站上的最新 Terraform 主題 。 如需 Databricks Terraform 提供者的特定問題,請參閱 databrickslabs/terraform-provider-databricks GitHub 存放庫中的問題

錯誤:無法安裝提供者

問題:如果您未將檔案簽入 terraform.lock.hcl 版本控制系統,而且您執行 terraform init 命令,則會出現下列訊息: Failed to install provider。 其他輸出可能包含類似下列的訊息:

Error while installing databrickslabs/databricks: v1.0.0: checksum list has no SHA-256 hash for "https://github.com/databricks/terraform-provider-databricks/releases/download/v1.0.0/terraform-provider-databricks_1.0.0_darwin_amd64.zip"

原因:您的 Terraform 組態參考過時的 Databricks Terraform 提供者。

解決方案:

  1. 將所有檔案中的 .tf 取代databrickslabs/databricksdatabricks/databricks

    若要自動化這些取代專案,請從包含要更新之 .tf 檔案的父資料夾執行下列 Python 命令:

    python3 -c "$(curl -Ls https://dbricks.co/updtfns)"
    
  2. 執行下列 Terraform 命令,然後在出現提示時核准變更:

    terraform state replace-provider databrickslabs/databricks databricks/databricks
    

    如需此命令的相關信息,請參閱 Terraform 檔中的命令:狀態取代提供者

  3. 執行下列 Terraform 命令來確認變更:

    terraform init
    

錯誤:無法查詢可用的提供者套件

問題:如果您未將檔案簽入 terraform.lock.hcl 版本控制系統,而且您執行 terraform init 命令,則會出現下列訊息: Failed to query available provider packages

原因:您的 Terraform 組態參考過時的 Databricks Terraform 提供者。

解決方案:遵循錯誤:無法安裝提供者中的解決方案指示。

啟用 記錄

Databricks Terraform 提供者會輸出您可以啟用的 TF_LOG 記錄,方法是將環境變數設定為 DEBUG 或任何其他 Terraform 支援的記錄層級。

根據預設,記錄會傳送至 stderr。 若要將記錄傳送至檔案,請將 TF_LOG_PATH 環境變數設定為目標檔案路徑。

例如,您可以執行下列命令來啟用偵錯層級的記錄,並將單色格式的記錄輸出至相對於目前工作目錄的 tf.log 檔案,而命令執行時 terraform apply

TF_LOG=DEBUG TF_LOG_PATH=tf.log terraform apply -no-color

如需 Terraform 記錄的詳細資訊,請參閱 偵錯 Terraform

其他範例

其他資源