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 už nastavili požadavky a vytvořili projekt Terraformu a nakonfigurovali jste projekt s ověřováním 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 nyní. 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 se poznámkový blok, cluster a úloha odstranily: 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.
  • Napodobení zprostředkovatele Terraformu Databricks, který umožňuje spouštět terraform test bez nasazení prostředků a také bez vyžadování přihlašovacích údajů pro ověření. Viz napodobení v dokumentaci k Terraformu. Pokud chcete spustit napodobené testy, jedním z přístupů je přidání řádku mock_provider "databricks" {} do testů a odebrání řádku command = apply nebo command = plannapří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

  1. Vytvořte pracovní prostor Azure Databricks.
  2. Správa prostředků pracovního prostoru pro pracovní prostor Azure Databricks

Řešení problému

Poznámka:

Pokud potřebujete podporu specifickou pro Terraform, podívejte se na nejnovější témata Terraformu na webu HashiCorp Discuss. Problémy související s poskytovatelem Terraformu Databricks najdete v tématu Problémy v úložišti Databrickslabs/terraform-provider-databricks Na GitHubu.

Chyba: Nepodařilo se nainstalovat zprostředkovatele

Problém: Pokud jste soubor nekontrolovali terraform.lock.hcl do systému správy verzí a spustili jste terraform init příkaz, zobrazí se následující zpráva: Failed to install provider. Další výstup může obsahovat zprávu podobnou této:

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"

Příčina: Vaše konfigurace Terraformu odkazují na zastaralé zprostředkovatele Databricks Terraform.

Řešení:

  1. Nahraďte databrickslabs/databricks je ve všech souborech.tf.databricks/databricks

    Pokud chcete tyto nahrazení automatizovat, spusťte následující příkaz Pythonu z nadřazené složky, která obsahuje .tf soubory, které chcete aktualizovat:

    python3 -c "$(curl -Ls https://dbricks.co/updtfns)"
    
  2. Spusťte následující příkaz Terraformu a po zobrazení výzvy schvalte změny:

    terraform state replace-provider databrickslabs/databricks databricks/databricks
    

    Informace o tomto příkazu naleznete v části Command: state replace-provider v dokumentaci k Terraformu.

  3. Ověřte změny spuštěním následujícího příkazu Terraformu:

    terraform init
    

Chyba: Dotazování dostupných balíčků zprostředkovatele se nezdařilo.

Problém: Pokud jste soubor nekontrolovali terraform.lock.hcl do systému správy verzí a spustili jste terraform init příkaz, zobrazí se následující zpráva: Failed to query available provider packages.

Příčina: Vaše konfigurace Terraformu odkazují na zastaralé zprostředkovatele Databricks Terraform.

Řešení: Postupujte podle pokynů k řešení v části Chyba: Nepodařilo se nainstalovat poskytovatele.

Povolit protokolování

Zprostředkovatel Databricks Terraform vypíše protokoly, které můžete povolit nastavením TF_LOG proměnné prostředí na DEBUG nebo jinou úroveň protokolu, kterou Terraform podporuje.

Ve výchozím nastavení se protokoly odesílají do stderr. Pokud chcete odesílat protokoly do souboru, nastavte TF_LOG_PATH proměnnou prostředí na cílovou cestu k souboru.

Můžete například spustit následující příkaz, který povolí protokolování na úrovni ladění a vypíše protokoly v monochromatickém formátu do souboru s názvem tf.log vzhledem k aktuálnímu pracovnímu adresáři, zatímco se terraform apply příkaz spustí:

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

Další informace o protokolování Terraformu najdete v tématu Ladění Terraformu.

Další příklady

Další materiály