Databricks Terraform-szolgáltató

A HashiCorp Terraform egy népszerű nyílt forráskódú eszköz, amely biztonságos és kiszámítható felhőinfra infrastruktúrát hoz létre számos felhőszolgáltatón. A Databricks Terraform szolgáltatóval rugalmas, hatékony eszköz használatával kezelheti a Azure Databricks munkaterületeket és a társított felhőinfra infrastruktúrát. A Databricks Terraform-szolgáltató célja, hogy támogassa az összes Databricks REST API-t, és támogassa az adatplatformok üzembe helyezésének és kezelésének leg bonyolított aspektusainak automatizálását. A Databricks-ügyfelek a Databricks Terraform-szolgáltatót használják fürtök és feladatok üzembe helyezésére és kezelésére, Databricks-munkaterületek építésére és adatelérés konfigurálára.

Terraform-erőforráskapcsolat

Fontos

A Databricks és a Microsoft hivatalosan nem támogatja a Databricks Terraform-szolgáltatóját. A Databricks mérnöki csapatai tartják karban, és az adott állapotban biztosítják. Nincs szolgáltatói szerződés (SLA). A Databricks és a Microsoft semmilyen garanciát nem vállal. Ha problémát tapasztal a szolgáltatóval kapcsolatban, jelentsen be egy GitHub Issue(Probléma) fájlt, amelyet a projekt karbantartók időengedélyek szerint fognak felülvizsgálni.

Első lépések

Az alábbi lépések segítségével telepítheti és konfigurálhatja a Terraform által működtetni szükséges parancssori eszközöket. Ilyen eszköz például a Terraform CLI és az Azure CLI. Az eszközök beállítása után kövesse az alap Terraform-konfigurációk létrehozásához szükséges lépéseket, amelyek segítségével később kezelheti a Azure Databricks-munkaterületeket és a társított Azure-felhőinfra infrastruktúrát.

Megjegyzés

Ez az eljárás feltételezi, hogy rendelkezik hozzáféréssel egy üzembe helyezett Azure Databricks-munkaterülethez Databricks-rendszergazdaként, hozzáféréssel a megfelelő Azure-előfizetéshez, valamint a Terraform által az adott Azure-előfizetésben végrehajtani kívánt műveletekhez szükséges megfelelő engedélyekkel. További információkat a következő cikkekben talál:

  1. Telepítse a Terraform CLI-t. Részletekért lásd: Terraform letöltése a Terraform webhelyén.

  2. Telepítse az Azure CLI-t, majd az Azure CLI használatával jelentkezzen be az Azure-ba az parancs az login futtatásával. Részletekért lásd: Az Azure CLI telepítése a Microsoft Azure webhelyén és Azure Provider: Authenticating using the Azure CLI (Hitelesítés az Azure CLI használatával) a Terraform webhelyén.

    az login
    

    Tipp

    Ahhoz, hogy a Terraform egy másik bejelentkezési környezetben fusson, futtassa újra a az login parancsot. Átválthat arra, hogy a Terraform a parancs futtatásának kimenetében felsoroltaktól különböző "isDefault": true Azure-előfizetést az login használjon. Ehhez futtassa a parancsot, és cserélje le a értéket a kívánt előfizetés tulajdonságának értékére a parancs az account set --subscription="<subscription ID>"<subscription ID>idaz login kimenetében.

    Ez az eljárás az Azure CLI-t és az alapértelmezett előfizetést használja a hitelesítéshez. Alternatív hitelesítési lehetőségekért lásd: Hitelesítés az Azure-ban a Terraform webhelyén.

  3. A terminálban hozzon létre egy üres könyvtárat, majd váltson rá. (A Terraform konfigurációs fájljainak minden egyes készletének a saját könyvtárában kell lennie.) Példa: mkdir terraform_demo && cd terraform_demo.

    mkdir terraform_demo && cd terraform_demo
    
  4. Ebben az üres könyvtárban hozzon létre egy nevű main.tf fájlt. Adja hozzá a következő tartalmat ehhez a fájlhoz, majd mentse a fájlt:

    terraform {
      required_providers {
        azurerm = {
          source = "hashicorp/azurerm"
          version = ">= 2.26"
        }
    
        databricks = {
          source = "databrickslabs/databricks"
          version = "0.3.9"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    provider "databricks" {}
    
  5. Inicializálja a fájlt tartalmazó main.tf munkakönyvtárat az parancs terraform init futtatásával. További információ: Command: init (Parancs: init) a Terraform webhelyén.

    terraform init
    

    A Terraform letölti a és a szolgáltatót, és telepíti őket az aktuális munkakönyvtár rejtett azurermdatabricks alkönyvtárában, a következő .terraform névvel: . A terraform init parancs kiírja, hogy a szolgáltatók melyik verziója lett telepítve. A Terraform létrehoz egy nevű zárolási fájlt is, amely meghatározza a használt szolgáltatói verziókat, így ön szabályozhatja, hogy mikor szeretné frissíteni a projekthez használt .terraform.lock.hcl szolgáltatókat.

  6. Alkalmazza a konfiguráció kívánt állapotának eléréséhez szükséges módosításokat az parancs terraform apply futtatásával. További információ: Command: apply (Parancs: alkalmazás a Terraform webhelyén).

    terraform apply
    

    Mivel még nem adott meg erőforrást a fájlban, a kimenet szintén, a Terraform egy nevű fájlba írja main.tfApply complete! Resources: 0 added, 0 changed, 0 destroyed. az terraform.tfstate adatokat. Az erőforrások létrehozásához folytassa a Mintakonfiguráció, a Következőlépések vagy mindkettő lépéssel a létrehozni kívánt erőforrások megadásához, majd futtassa újra a parancsot. A Terraform az ebben a fájlban tárolja az erőforrás-kezeléshez szükséges adatokat és tulajdonságokat, hogy a terjesztés során frissítheti vagy megsemmisítheti terraform.tfstate azokat.

Mintakonfiguráció

Az alábbi eljárással létrehozhat egy Terraform-mintakonfigurációt, amely létrehoz egy jegyzetfüzetet és egy feladatot a jegyzetfüzet futtatásához egy meglévő Azure Databricks munkaterületen.

  1. Az Első lépések alatt létrehozott fájlban módosítsa a szolgáltatót úgy, hogy egy meglévő meglévő main.tf Azure Databricks main.tfdatabricks hivatkozik:

    provider "databricks" {
      host = var.databricks_workspace_url
    }
    
  2. A fájl végén adja main.tf hozzá a következő kódot:

    variable "databricks_workspace_url" {
      description = "The URL to the Azure Databricks workspace (must start with https://)"
      type = string
      default = "<Azure Databricks workspace URL>"
    }
    
    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 = ["<Your email address>"]
    }
    
    // Get information about the Databricks user that is calling
    // the Databricks API (the one associated with "databricks_connection_profile").
    data "databricks_current_user" "me" {}
    
    // Create a simple, sample notebook. Store it in a subfolder within
    // the Databricks current user's folder. The notebook contains the
    // following basic Spark code in Python.
    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
      )
    }
    
    // Create a job to run the sample notebook. The job will create
    // a cluster to run on. The cluster will use the smallest available
    // node type and run the latest version of Spark.
    
    // Get the smallest available node type to use for the cluster. Choose
    // only from among available node types with local storage.
    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
    }
    
  3. Cserélje le a következő értékeket, majd mentse a fájlt:

    • Cserélje <Azure Databricks workspace URL> le a helyére a Azure Databricks URL-címét.
    • Cserélje le <Your email address> a helyére az e-mail-címét.
  4. Futtatja a terraform apply parancsot.

  5. Ellenőrizze, hogy létrejött-e a jegyzetfüzet és a feladat: a parancs kimenetében keresse meg a és a terraform applynotebook_urljob_url URL-címeit, és keresse meg őket.

  6. Futtassa a feladatot: a Feladatok lapon kattintson a Futtatás most elemre. A feladat befejezése után jelölje be az e-mail-fiókját.

  7. Ha végzett ezzel a mintával, törölje a jegyzetfüzetet és a feladatot a Azure Databricks a parancs terraform destroy futtatásával.

  8. Ellenőrizze, hogy a jegyzetfüzet és a feladat törölve lett-e: frissítse a jegyzetfüzetet és a Feladatok lapokat, hogy megjelenítsen egy üzenetet arról, hogy az újratét nem található.

Következő lépések

  1. Hozzon létre egy Azure Databricks munkaterületet.
  2. Munkaterület-erőforrások kezelése egy Azure Databricks munkaterületen.

Hibaelhárítás

A Terraform-specifikus támogatásért tekintse meg a Legújabb Terraform-témaköröket a HashiCorp Discuss webhelyen. A Databricks Terraform-szolgáltatóval kapcsolatos problémákért lásd a Databrickslabs/terraform-provider-databricks GitHub problémákat.

További források