Databricks Terraform-provider

HashiCorp Terraform är ett populärt verktyg med öppen källkod för att skapa säker och förutsägbar molninfrastruktur hos flera molnleverantörer. Du kan använda Databricks Terraform-providern för att hantera Azure Databricks arbetsytor och tillhörande molninfrastruktur med hjälp av ett flexibelt och kraftfullt verktyg. Målet med Databricks Terraform-providern är att stödja alla Databricks REST API:er, vilket ger stöd för automatisering av de mest komplicerade aspekterna av att distribuera och hantera dina dataplattformar. Databricks-kunder använder Databricks Terraform-providern för att distribuera och hantera kluster och jobb, etablera Databricks-arbetsytor och konfigurera dataåtkomst.

Terraform-resursrelation

Viktigt

Databricks Terraform-providern stöds inte formellt av Databricks eller Microsoft. Den underhålls av Databricks fältteknikteam och tillhandahålls i dess skick. Det finns inget serviceavtal (SLA). Databricks och Microsoft ger inga garantier av något slag. Om du upptäcker ett problem med providern kan du öppna ett GitHub-ärendeså granskas det av projekt underhållarna efter tidstillstånd.

Komma igång

Utför följande steg för att installera och konfigurera de kommandoradsverktyg som Terraform behöver för att fungera. Dessa verktyg omfattar Terraform CLI och Azure CLI. När du har skapat dessa verktyg slutför du stegen för att skapa en grundläggande Terraform-konfiguration som du kan använda senare för att hantera dina Azure Databricks-arbetsytor och den associerade Azure-molninfrastrukturen.

Anteckning

Den här proceduren förutsätter att du har åtkomst till en distribuerad Azure Databricks-arbetsyta som Databricks-administratör, åtkomst till motsvarande Azure-prenumeration och lämpliga behörigheter för de åtgärder som du vill att Terraform ska utföra i den Azure-prenumerationen. Mer information finns i följande:

  1. Installera Terraform CLI. Mer information finns i Ladda ned Terraform på Terraform-webbplatsen.

  2. Installera Azure CLI och använd sedan Azure CLI för att logga in på Azure genom att köra az login kommandot . Mer information finns i Installera Azure CLI på Microsoft Azure och Azure Provider: Authenticating using the Azure CLI (Autentisera med Azure CLI) på Terraform-webbplatsen.

    az login
    

    Tips

    Om du vill att Terraform ska köras inom kontexten för en annan inloggning kör du az login kommandot igen. Du kan byta till att Terraform ska använda en annan Azure-prenumeration än den som anges i "isDefault": true utdata för att köra az login . Det gör du genom att köra kommandot , där du ersätter med värdet för egenskapen för den önskade prenumerationen i az account set --subscription="<subscription ID>" <subscription ID> id utdata för att köra az login .

    I den här proceduren används Azure CLI tillsammans med standardprenumerationen för att autentisera. Alternativa autentiseringsalternativ finns i Autentisera till Azure på Terraform-webbplatsen.

  3. Skapa en tom katalog i terminalen och växla sedan till den. (Varje separat uppsättning Terraform-konfigurationsfiler måste finnas i en egen katalog.) Till exempel: mkdir terraform_demo && cd terraform_demo .

    mkdir terraform_demo && cd terraform_demo
    
  4. I den här tomma katalogen skapar du en fil med namnet main.tf . Lägg till följande innehåll i den här filen och spara sedan filen:

    terraform {
      required_providers {
        azurerm = {
          source = "hashicorp/azurerm"
          version = ">= 2.26"
        }
    
        databricks = {
          source = "databrickslabs/databricks"
          version = "0.3.2"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    provider "databricks" {}
    
  5. Initiera arbetskatalogen som innehåller main.tf filen genom att köra kommandot terraform init . Mer information finns i Kommando: init på Terraform-webbplatsen.

    terraform init
    

    Terraform laddar ned azurerm providers och och installerar dem i en dold databricks underkatalog i din aktuella arbetskatalog med namnet .terraform . Kommandot terraform init skriver ut vilken version av providers som har installerats. Terraform skapar också en låsfil med namnet som anger exakt vilka providerversioner som används, så att du kan styra när du vill uppdatera de providers som .terraform.lock.hcl används för ditt projekt.

  6. Tillämpa de ändringar som krävs för att nå det önskade tillståndet för konfigurationen genom att köra terraform apply kommandot . Mer information finns i Kommando: tillämpa på Terraform-webbplatsen.

    terraform apply
    

    Eftersom inga resurser ännu har angetts i filen blir utdata också, main.tf Apply complete! Resources: 0 added, 0 changed, 0 destroyed. terraform skriver data till en fil med namnet terraform.tfstate . Om du vill skapa resurser fortsätter du medExempelkonfiguration, Nästa steg eller båda för att ange önskade resurser att skapa och kör sedan kommandot terraform apply igen. Terraform lagrar ID:erna och egenskaperna för de resurser som hanteras i den här filen, så att de kan uppdatera eller terraform.tfstate förstöra dessa resurser i framtiden.

Exempelkonfiguration

Slutför följande procedur för att skapa en Terraform-exempelkonfiguration som skapar en notebook-dator och ett jobb för att köra anteckningsboken i en Azure Databricks arbetsyta.

  1. I filen main.tf som du skapade i Komma igång ändrar duprovidern så att databricks den refererar till en Azure Databricks arbetsyta:

    provider "databricks" {
      host = var.databricks_workspace_url
    }
    
  2. I slutet av filen main.tf lägger du till följande kod:

    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. Ersätt följande värden och spara sedan filen:

    • Ersätt <Azure Databricks workspace URL> med URL:en Azure Databricks arbetsytan.
    • Ersätt <Your email address> med din e-postadress.
  4. Kör terraform apply.

  5. Kontrollera att notebook-datorn och jobbet har skapats: leta upp URL:erna i kommandots utdata terraform apply notebook_url och gå till job_url dem.

  6. Kör jobbet: på sidan Jobb klickar du på Kör nu. När jobbet är klart kontrollerar du inkorgen för e-post.

  7. När du är klar med det här exemplet tar du bort anteckningsboken och jobbet från Azure Databricks genom att köra terraform destroy .

  8. Kontrollera att anteckningsboken och jobbet har tagits bort: uppdatera notebook- och jobbsidorna för att visa ett meddelande om att det inte går att hitta några nya.

Nästa steg

  1. Skapa en Azure Databricks arbetsyta.
  2. Hantera arbetsyteresurser för en Azure Databricks arbetsyta.

Felsökning

Terraform-specifikt stöd finns i de senaste Terraform-ämnena på webbplatsen HashiCorp Discuss. Problem som är specifika för Databricks Terraform-providern finns i ProblemGitHub-lagringsplatsen databrickslabs/terraform-provider-databricks.

Ytterligare resurser