Databricks Terraform-provider

HashiCorp Terraform is een populair open source voor het maken van een veilige en voorspelbare cloudinfrastructuur bij verschillende cloudproviders. U kunt de Databricks Terraform-provider gebruiken om uw Azure Databricks-werkruimten en de bijbehorende cloudinfrastructuur te beheren met behulp van een flexibel, krachtig hulpprogramma. Het doel van de Databricks Terraform-provider is om alle Databricks REST API's te ondersteunen, en automatisering te ondersteunen van de meest gecompliceerde aspecten van het implementeren en beheren van uw gegevensplatforms. Databricks-klanten gebruiken de Databricks Terraform-provider voor het implementeren en beheren van clusters en taken, het inrichten van Databricks-werkruimten en het configureren van gegevenstoegang.

Terraform-resourcerelatie

Belangrijk

De Databricks Terraform-provider wordt niet formeel ondersteund door Databricks of Microsoft. Het wordt onderhouden door Databricks-field engineering-teams en wordt als het goed is verstrekt. Er is geen Service Level Agreement (SLA). Databricks en Microsoft bieden geen garanties van welke aard dan ook. Als u een probleem met de provider ontdekt, kunt u een GitHub Probleemen wordt dit beoordeeld door projectontwikkelaars naar tijdsgekeken.

Aan de slag

Voer de volgende stappen uit om de opdrachtregelprogramma's te installeren en configureren die Terraform moet uitvoeren. Deze hulpprogramma's omvatten de Terraform CLI en de Azure CLI. Nadat u deze hulpprogramma's hebt gemaakt, voltooit u de stappen voor het maken van een Terraform-basisconfiguratie die u later kunt gebruiken om uw Azure Databricks-werkruimten en de bijbehorende Azure-cloudinfrastructuur te beheren.

Notitie

In deze procedure wordt ervan uitgaat dat u als Databricks-beheerder toegang hebt tot een geïmplementeerde Azure Databricks-werkruimte, toegang hebt tot het bijbehorende Azure-abonnement en de juiste machtigingen hebt voor de acties die Terraform in dat Azure-abonnement moet uitvoeren. Raadpleeg de volgende artikelen voor meer informatie:

  1. Installeer de Terraform CLI. Zie Terraform downloaden op de Terraform-website voor meer informatie.

  2. Installeer de Azure CLI en gebruik vervolgens de Azure CLI om u aan te melden bij Azure door de opdracht uit te az login voeren. Zie Install the Azure CLI on the Microsoft Azure website (Azure CLI installeren op de website van Microsoft Azure en Azure Provider: Authenticating using the Azure CLI (De Azure CLI installeren) op de Terraform-website voor meer informatie.

    az login
    

    Tip

    Voer de opdracht opnieuw uit om Terraform uit te voeren binnen de context van een andere az login aanmelding. U kunt overschakelen om Terraform een ander Azure-abonnement te laten gebruiken dan het abonnement dat wordt vermeld als "isDefault": true in de uitvoer van het uitvoeren van az login . Voer hiervoor de opdracht uit en vervang door de waarde van de eigenschap van het gewenste az account set --subscription="<subscription ID>" abonnement in de uitvoer van het uitvoeren van <subscription ID> id az login .

    In deze procedure wordt de Azure CLI, samen met het standaardabonnement, gebruikt om te verifiëren. Zie Verificatie bij Azure op de Terraform-website voor alternatieve verificatieopties.

  3. Maak in uw terminal een lege map en schakel er vervolgens naar over. (Elke afzonderlijke set Terraform-configuratiebestanden moet zich in een eigen map hebben.) Bijvoorbeeld: mkdir terraform_demo && cd terraform_demo .

    mkdir terraform_demo && cd terraform_demo
    
  4. Maak in deze lege map een bestand met de naam main.tf . Voeg de volgende inhoud toe aan dit bestand en sla het bestand op:

    terraform {
      required_providers {
        azurerm = {
          source = "hashicorp/azurerm"
          version = ">= 2.26"
        }
    
        databricks = {
          source = "databrickslabs/databricks"
          version = "0.3.2"
        }
      }
    }
    
    provider "azurerm" {
      features {}
    }
    
    provider "databricks" {}
    
  5. Initialiseer de map met het bestand main.tf door de opdracht uit te terraform init voeren. Zie Command: init op de Terraform-website voor meer informatie.

    terraform init
    

    Terraform downloadt de providers en en installeert deze in een verborgen submap van azurerm uw databricks huidige werkmap, met de naam .terraform . Met terraform init de opdracht wordt afgedrukt welke versie van de providers is geïnstalleerd. Terraform maakt ook een vergrendelingsbestand met de naam waarin de exacte providerversies worden opgegeven, zodat u kunt bepalen wanneer u de providers wilt bijwerken die worden gebruikt .terraform.lock.hcl voor uw project.

  6. Pas de vereiste wijzigingen toe om de gewenste status van de configuratie te bereiken door de opdracht uit te terraform apply voeren. Zie Opdracht: toepassen op de Terraform-website voor meer informatie.

    terraform apply
    

    Omdat er nog geen resources zijn opgegeven in het bestand, is de uitvoer Ook main.tf Apply complete! Resources: 0 added, 0 changed, 0 destroyed. schrijft Terraform gegevens naar een bestand met de naam terraform.tfstate . Als u resources wilt maken, gaat u verder met Voorbeeldconfiguratie,Volgende stappenof beide om de gewenste resources op te geven die u wilt maken. Voer vervolgens de opdracht terraform apply opnieuw uit. Terraform slaat de ID's en eigenschappen op van de resources die het in dit bestand beheert, zodat deze resources in de toekomst kunnen worden bijgewerkt of terraform.tfstate vernietigd.

Voorbeeldconfiguratie

Voer de volgende procedure uit om een Terraform-voorbeeldconfiguratie te maken die een notebook en een taak maakt om dat notebook uit te voeren, in een bestaande Azure Databricks werkruimte.

  1. Wijzig in het bestand dat u hebt gemaakt in Aan de slag de provider zodat deze verwijst main.tf naar een bestaande Azure Databricks databricks werkruimte:

    provider "databricks" {
      host = var.databricks_workspace_url
    }
    
  2. Voeg aan het einde main.tf van het bestand de volgende code toe:

    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. Vervang de volgende waarden en sla het bestand op:

    • Vervang <Azure Databricks workspace URL> door de URL naar de Azure Databricks werkruimte.
    • Vervang <Your email address> door uw e-mailadres.
  4. Voer terraform apply uit.

  5. Controleer of het notebook en de taak zijn gemaakt: zoek in de uitvoer van de opdracht de terraform apply URL's voor en ga naar deze notebook_url job_url url's.

  6. Voer de taak uit: klik op de pagina Taken op Nu uitvoeren. Nadat de taak is voltooien, controleert u het postvak IN van uw e-mail.

  7. Wanneer u klaar bent met dit voorbeeld, verwijdert u het notebook en de taak uit Azure Databricks werkruimte door uit te terraform destroy werken.

  8. Controleer of het notebook en de taak zijn verwijderd: vernieuw het notebook en de pagina's Taken om een bericht weer te geven dat de gegevens niet kunnen worden gevonden.

Volgende stappen

  1. Maak een Azure Databricks werkruimte.
  2. Werkruimte-resources voor een Azure Databricks beheren.

Problemen oplossen

Zie de meest recente Terraform-onderwerpen op de hashiCorp Discuss-website voor specifieke ondersteuning van Terraform. Zie Problemen in de opslagplaats databrickslabs/terraform-provider-databricks GitHub voor problemen die specifiek zijn voor de Databricks Terraform-provider.

Aanvullende bronnen