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 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.
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 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:
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. - 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 řádekmock_provider "databricks" {}
do testů a odebrat řádekcommand = 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.
Další materiály
- Dokumentace ke zprostředkovateli Databricks na webu Terraform Registry
- Dokumentace k Terraformu na webu Terraformu
- Úložiště GitHubu s příklady pro Databricks Terraform