Sdílet prostřednictvím


Poskytovatel Terraformu pro Databricks

HashiCorp Terraform je oblíbený opensourcový nástroj pro vytváření bezpečné a předvídatelné cloudové infrastruktury napříč několika poskytovateli cloudu. Pomocí poskytovatele Databricks Terraform můžete spravovat pracovní prostory Azure Databricks a přidruženou cloudovou infrastrukturu pomocí flexibilního výkonného nástroje. Cílem poskytovatele Databricks Terraform je podporovat všechna rozhraní REST API Databricks, která podporují automatizaci nejkomplikovanějších aspektů nasazení a správy datových platforem. Zákazníci Databricks používají poskytovatele Databricks Terraform k nasazení a správě clusterů a úloh a ke konfiguraci přístupu k datům. Zřiďte pracovní prostory Azure Databricks pomocí poskytovatele Azure.

Začínáme

V této části nainstalujete a nakonfigurujete požadavky na použití Terraformu a poskytovatele Databricks Terraformu na místním vývojovém počítači. Pak nakonfigurujete ověřování Terraformu. V této části najdete ukázkovou konfiguraci , se kterou můžete experimentovat se zřízením poznámkového bloku, clusteru a úlohy Azure Databricks pro spuštění poznámkového bloku v clusteru v existujícím pracovním prostoru Azure Databricks.

Požadavky

  1. Musíte mít Rozhraní příkazového řádku Terraformu. Viz Stažení Terraformu na webu Terraformu .

  2. Musíte mít projekt Terraformu. V terminálu vytvořte prázdný adresář a přepněte na něj. (Každá samostatná sada konfiguračních souborů Terraformu musí být ve vlastním adresáři, který se nazývá Projekt Terraform .) Příklad: mkdir terraform_demo && cd terraform_demo.

    mkdir terraform_demo && cd terraform_demo
    

    Do jednoho nebo více konfiguračních souborů v projektu Terraformu zahrňte konfigurace Terraformu. Informace o syntaxi konfiguračního souboru najdete v dokumentaci k jazyku Terraform na webu Terraform.

  3. Do projektu Terraformu musíte přidat závislost pro zprostředkovatele Databricks Terraform. Přidejte následující soubory do jednoho z konfiguračních souborů v projektu Terraform:

    terraform {
      required_providers {
        databricks = {
          source = "databricks/databricks"
        }
      }
    }
    
  4. Musíte nakonfigurovat ověřování pro projekt Terraformu. Viz Ověřování v dokumentaci zprostředkovatele Databricks Terraform.

Vzorová konfigurace

Tato část obsahuje ukázkovou konfiguraci, se kterou můžete experimentovat se zřízením poznámkového bloku Azure Databricks, clusteru a úlohy pro spuštění poznámkového bloku v clusteru v existujícím pracovním prostoru Azure Databricks. Předpokládá se, že jste již nastavili požadavky a také vytvořili projekt Terraformu a nakonfigurovali projekt pomocí ověřování Terraformu, jak je popsáno v předchozí části.

  1. Vytvořte soubor s názvem me.tf v projektu Terraform a přidejte následující kód. Tento soubor získá informace o aktuálním uživateli (vy):

    # Retrieve information about the current user.
    data "databricks_current_user" "me" {}
    
  2. Vytvořte další soubor s názvem notebook.tfa přidejte následující kód. Tento soubor představuje poznámkový blok.

    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. Vytvořte další soubor s názvem notebook.auto.tfvarsa přidejte následující kód. Tento soubor určuje vlastnosti poznámkového bloku.

    notebook_subdirectory = "Terraform"
    notebook_filename     = "notebook-getting-started.py"
    notebook_language     = "PYTHON"
    
  4. Vytvořte další soubor s názvem notebook-getting-started.pya přidejte následující kód. Tento soubor představuje obsah poznámkového bloku.

    display(spark.range(10))
    
  5. Vytvořte další soubor s názvem cluster.tfa přidejte následující kód. Tento soubor představuje cluster.

    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. Vytvořte další soubor s názvem cluster.auto.tfvarsa přidejte následující kód. Tento soubor určuje vlastnosti clusteru.

    cluster_name                    = "My Cluster"
    cluster_autotermination_minutes = 60
    cluster_num_workers             = 1
    
  7. Vytvořte další soubor s názvem job.tfa přidejte následující kód. Tento soubor představuje úlohu, která spouští poznámkový blok v clusteru.

    variable "job_name" {
      description = "A name for the job."
      type        = string
      default     = "My Job"
    }
    
    variable "task_key" {
      description = "A name for the task."
      type        = string
      default     = "my_task"
    }
    
    resource "databricks_job" "this" {
      name = var.job_name
      task {
        task_key = var.task_key
        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. Vytvořte další soubor s názvem job.auto.tfvarsa přidejte následující kód. Tento soubor určuje vlastnosti úloh.

    job_name = "My Job"
    task_key = "my_task"
    
  9. Spusťte terraform plan. Pokud dojde k nějakým chybám, opravte je a spusťte příkaz znovu.

  10. Spusťte terraform apply.

  11. Ověřte, že se vytvořil poznámkový blok, cluster a úloha: ve výstupu terraform apply příkazu vyhledejte adresy URL pro notebook_url, cluster_urla job_urlpřejděte na ně.

  12. Spusťte úlohu: Na stránce Úlohy klikněte na Spustit. Po dokončení úlohy zkontrolujte doručenou poštu e-mailu.

  13. Až budete s touto ukázkou hotovi, odstraňte poznámkový blok, cluster a úlohu z pracovního prostoru Azure Databricks spuštěním terraform destroypříkazu .

    Poznámka:

    Další informaceoch terraform planterraform applyterraform destroy

  14. Ověřte, že byly odstraněny poznámkový blok, cluster a úloha: aktualizujte stránky poznámkového bloku, clusteru a úloh, aby se zobrazila zpráva, že prostředek nebyl nalezen.

Testování

Otestujte konfigurace Terraformu před nasazením nebo po jejich nasazení. Testy můžete spustit podobně jako testování jednotek před nasazením prostředků. Po nasazení prostředků můžete také spouštět testy podobné integračnímu testování. Viz Testy v dokumentaci k Terraformu.

Pomocí tohoto procesu spusťte testy analogické k integračním testům s ukázkovou konfigurací tohoto článku:

  1. Vytvořte soubor s názvem cluster.tftest.hcla přidejte následující kód. Tento soubor testuje, jestli má nasazený cluster očekávaný název clusteru.

    # Filename: cluster.tftest.hcl
    
    run "cluster_name_test" {
      command = apply
    
      assert {
        condition     = databricks_cluster.this.cluster_name == var.cluster_name
        error_message = "Cluster name did not match expected name"
      }
    }
    
  2. Vytvořte soubor s názvem job.tftest.hcla přidejte následující kód. Tento soubor testuje, jestli má nasazená úloha očekávaný název úlohy.

    run "job_name_test" {
      command = apply
    
      assert {
        condition     = databricks_job.this.name == var.job_name
        error_message = "Job name did not match expected name"
      }
    }
    
  3. Vytvořte soubor s názvem notebook.tftest.hcla přidejte následující kód. Tento soubor testuje, jestli má nasazený poznámkový blok očekávanou cestu pracovního prostoru.

    run "notebook_path_test" {
      command = apply
    
      assert {
        condition     = databricks_notebook.this.path == "${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}"
        error_message = "Notebook path did not match expected path"
      }
    }
    
  4. Spusťte terraform test. Terraform nasadí každý prostředek do pracovního prostoru Azure Databricks, spustí každý související test a hlásí jeho výsledek testu a pak nasadí nasazený prostředek.

Pomocí následujícího procesu spusťte testy analogické k testování jednotek s ukázkovou konfigurací tohoto článku:

  • Změňte řádek command = apply v každém z předchozích testů na command = plana pak spusťte terraform test. Terraform spustí každý související test a nahlásí jeho výsledek testu, ale nenasadí žádné prostředky.
  • Napodobte zprostředkovatele Databricks Terraform, který vám umožní spouštět terraform test bez nasazení prostředků a také bez požadování ověřovacích údajů. Viz napodobení v dokumentaci k Terraformu. Pokud chcete spustit napodobené testy, jedním z přístupů je přidat řádek mock_provider "databricks" {} do testů a odebrat řádek command = apply nebo command = plan, například:
# Filename: cluster.tftest.hcl

mock_provider "databricks" {}

run "cluster_mock_name_test" {
  assert {
    condition     = databricks_cluster.this.cluster_name == var.cluster_name
    error_message = "Cluster name did not match expected name"
  }
}
# Filename: job.tftest.hcl

mock_provider "databricks" {}

run "job_mock_name_test" {
  assert {
    condition     = databricks_job.this.name == var.job_name
    error_message = "Job name did not match expected name"
  }
}
# Filename: notebook.tftest.hcl

mock_provider "databricks" {}

run "notebook_mock_path_test" {
  assert {
    condition     = databricks_notebook.this.path == "${data.databricks_current_user.me.home}/${var.notebook_subdirectory}/${var.notebook_filename}"
    error_message = "Notebook path did not match expected path"
  }
}

Další kroky

Další materiály