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
Musíte mít Rozhraní příkazového řádku Terraformu. Viz Stažení Terraformu na webu Terraformu .
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.
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" } } }
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.
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" {}
Vytvořte další soubor s názvem
notebook.tf
a 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 }
Vytvořte další soubor s názvem
notebook.auto.tfvars
a 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"
Vytvořte další soubor s názvem
notebook-getting-started.py
a přidejte následující kód. Tento soubor představuje obsah poznámkového bloku.display(spark.range(10))
Vytvořte další soubor s názvem
cluster.tf
a 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 }
Vytvořte další soubor s názvem
cluster.auto.tfvars
a 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
Vytvořte další soubor s názvem
job.tf
a 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 }
Vytvořte další soubor s názvem
job.auto.tfvars
a přidejte následující kód. Tento soubor určuje vlastnosti úloh.job_name = "My Job" task_key = "my_task"
Spusťte
terraform plan
. Pokud dojde k nějakým chybám, opravte je a spusťte příkaz znovu.Spusťte
terraform apply
.Ověřte, že se vytvořil poznámkový blok, cluster a úloha: ve výstupu
terraform apply
příkazu vyhledejte adresy URL pronotebook_url
,cluster_url
ajob_url
přejděte na ně.Spusťte úlohu: Na stránce Úlohy klikněte na Spustit. Po dokončení úlohy zkontrolujte doručenou poštu e-mailu.
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 destroy
příkazu .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:
Vytvořte soubor s názvem
cluster.tftest.hcl
a 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" } }
Vytvořte soubor s názvem
job.tftest.hcl
a 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" } }
Vytvořte soubor s názvem
notebook.tftest.hcl
a 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" } }
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ů nacommand = plan
a pak spusťteterraform 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í řádkumock_provider "databricks" {}
do testů a odebrání řádkucommand = apply
nebocommand = 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
- Vytvořte pracovní prostor Azure Databricks.
- 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í:
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)"
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.
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
- Dokumentace ke zprostředkovateli Databricks na webu Terraform Registry
- Dokumentace k Terraformu na webu Terraformu
- Úložiště terraform-databricks-examples na GitHubu