Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A HashiCorp Terraform egy népszerű nyílt forráskódú eszköz, amellyel biztonságos és kiszámítható felhőinfrastruktúra jön létre több felhőszolgáltató között. A Databricks Terraform-szolgáltatóval rugalmas, hatékony eszközzel kezelheti Azure Databricks-munkaterületeit és a hozzá tartozó felhőinfrastruktúra adatait. A Databricks Terraform-szolgáltató célja az összes Databricks REST API támogatása, amely támogatja az adatplatformok üzembe helyezésének és kezelésének legbonyolultabb aspektusainak automatizálását. A Databricks ügyfelei a Databricks Terraform szolgáltatót használják fürtök és feladatok üzembe helyezésére és kezelésére, valamint az adathozzáférés konfigurálására. Az Azure Provider használatával hozhat létre Azure Databricks-munkaterületeket.
Első lépések
Ebben a szakaszban követelményeket telepít és konfigurál a Terraform és a Databricks Terraform-szolgáltató helyi fejlesztői gépen való használatához. Ezután konfigurálja a Terraform-hitelesítést. A cikk következő szakaszában egy mintakonfiguráció található, amely segítségével kiépíthet egy Azure Databricks-jegyzetfüzetet, fürtöt és egy feladatot, amely a jegyzetfüzetet futtatja az adott fürtön egy meglévő Azure Databricks-munkaterületen.
Követelmények
Rendelkeznie kell a Terraform parancssori felületével. Lásd: Terraform letöltése a Terraform webhelyén.
Terraform-projektnek kell lennie. A terminálban hozzon létre egy üres könyvtárat, majd váltson rá. (A Terraform-konfigurációs fájlok mindegyikének a saját könyvtárában kell lennie, amelyet Terraform-projektnek nevezünk.) Például:
mkdir terraform_demo && cd terraform_demo.mkdir terraform_demo && cd terraform_demoTerraform-konfigurációk belefoglalása a projekthez egy vagy több konfigurációs fájlba a Terraform-projektben. A konfigurációs fájl szintaxisával kapcsolatos információkért tekintse meg a Terraform nyelvi dokumentációját a Terraform webhelyén.
A Terraform-projekthez hozzá kell adnia egy függőséget a Databricks Terraform-szolgáltatóhoz. Adja hozzá a következőket a Terraform-projekt egyik konfigurációs fájljához:
terraform { required_providers { databricks = { source = "databricks/databricks" } } }A Terraform-projekt hitelesítését konfigurálnia kell. Lásd a Hitelesítést a Databricks Terraform szolgáltató dokumentációjában.
Mintakonfiguráció
Ez a szakasz egy mintakonfigurációt biztosít, amely segítségével tesztelheti, hogyan lehet egy Azure Databricks-jegyzetfüzetet, egy fürtöt és egy feladatot üzembe helyezni, hogy a jegyzetfüzet a fürtön fusson egy meglévő Azure Databricks-munkaterületen. Feltételezi, hogy már beállította a követelményeket, valamint létrehozott egy Terraform-projektet, és terraform-hitelesítéssel konfigurálta a projektet az előző szakaszban leírtak szerint.
Hozzon létre egy fájlt
me.tfa Terraform-projektben, és adja hozzá a következő kódot. Ez a fájl információt kap az aktuális felhasználóról (Önről):# Retrieve information about the current user. data "databricks_current_user" "me" {}Hozzon létre egy másik nevű fájlt
notebook.tf, és adja hozzá a következő kódot. Ez a fájl a jegyzetfüzetet jelöli.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 }Hozzon létre egy másik nevű fájlt
notebook.auto.tfvars, és adja hozzá a következő kódot. Ez a fájl határozza meg a jegyzetfüzet tulajdonságait.notebook_subdirectory = "Terraform" notebook_filename = "notebook-getting-started.py" notebook_language = "PYTHON"Hozzon létre egy másik nevű fájlt
notebook-getting-started.py, és adja hozzá a következő kódot. Ez a fájl a jegyzetfüzet tartalmát jelöli.display(spark.range(10))Hozzon létre egy másik nevű fájlt
cluster.tf, és adja hozzá a következő kódot. Ez a fájl a fürtöt jelöli.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 }Hozzon létre egy másik nevű fájlt
cluster.auto.tfvars, és adja hozzá a következő kódot. Ez a fájl határozza meg a fürt tulajdonságait.cluster_name = "My Cluster" cluster_autotermination_minutes = 60 cluster_num_workers = 1Hozzon létre egy másik nevű fájlt
job.tf, és adja hozzá a következő kódot. Ez a fájl azt a feladatot jelöli, amely a fürtön futtatja a jegyzetfüzetet.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 }Hozzon létre egy másik nevű fájlt
job.auto.tfvars, és adja hozzá a következő kódot. Ez a fájl határozza meg a feladatok tulajdonságait.job_name = "My Job" task_key = "my_task"Futtassa az
terraform planparancsot. Ha hiba történt, javítsa ki őket, majd futtassa újra a parancsot.Futtassa az
terraform applyparancsot.Ellenőrizze, hogy a jegyzetfüzet, a fürt és a feladat létrejöttek-e: a
terraform applyparancs kimenetében keresse meg anotebook_url,cluster_urlésjob_urlURL-eket, és nyissa meg őket.Futtassa a feladatot: a Feladatok lapon kattintson a Futtatás gombra. A feladat befejezése után ellenőrizze az e-mail-postaládáját.
Ha végzett ezzel a példával, törölje a jegyzetfüzetet, a fürtöt és a feladatot az Azure Databricks-munkaterületről a következő futtatásával:
terraform destroy.Feljegyzés
A ,
terraform planésterraform applyparancsokkal kapcsolatos további információkért tekintse meg aterraform destroyTerraform parancssori felületének dokumentációját a Terraform dokumentációjában.Ellenőrizze, hogy törölték-e a jegyzetfüzetet, a fürtöt és a feladatot: frissítse a jegyzetfüzet, a fürt és a Feladatok lapokat mindegyikre, és megjelenítsen egy üzenetet, amely szerint az erőforrás nem található.
Tesztelés
Tesztelje a Terraform-konfigurációkat az üzembe helyezés előtt vagy után. Az erőforrások üzembe helyezése előtt az egységteszteléshez hasonló teszteket futtathat. Az erőforrások üzembe helyezése után az integrációs teszteléshez hasonló teszteket is futtathat. Lásd: Tesztek a Terraform dokumentációjában.
A jelen cikk mintakonfigurációján az integrációs tesztekhez hasonló teszteket futtathat a következő eljárással:
Hozzon létre egy nevű
cluster.tftest.hclfájlt, és adja hozzá a következő kódot. Ez a fájl ellenőrzi, hogy a telepített fürt rendelkezik-e a megfelelő fürtnévvel.# 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" } }Hozzon létre egy nevű
job.tftest.hclfájlt, és adja hozzá a következő kódot. Ez a fájl ellenőrzi, hogy az üzembe helyezett feladat rendelkezik-e a várt feladatnévvel.run "job_name_test" { command = apply assert { condition = databricks_job.this.name == var.job_name error_message = "Job name did not match expected name" } }Hozzon létre egy nevű
notebook.tftest.hclfájlt, és adja hozzá a következő kódot. Ez a fájl ellenőrzi, hogy az üzembe helyezett jegyzetfüzet rendelkezik-e a várt munkaterület-elérési útlal.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" } }Futtassa az
terraform testparancsot. A Terraform üzembe helyezi az egyes erőforrásokat az Azure Databricks-munkaterületen, futtatja az egyes kapcsolódó teszteket, és jelentést készít a teszt eredményéről, majd lebontja az üzembe helyezett erőforrást.
Futtassa a cikk mintakonfigurációjának egységtesztjeihez hasonló teszteket a következő eljárással:
- Cserélje ki a sorokban
command = apply-tcommand = plan-re az összes előző tesztben, és futtassaterraform test. A Terraform futtatja az egyes kapcsolódó teszteket, és jelentést készít a teszt eredményéről, de nem helyez üzembe erőforrásokat. - Használja a Databricks Terraform-szolgáltatót, amely lehetővé teszi
terraform testfuttatását erőforrások üzembe helyezése és hitelesítési hitelesítő adatok megkövetelése nélkül. Tekintse meg a Mocks a Terraform dokumentációban. A próbatesztek futtatásához az egyik módszer a sormock_provider "databricks" {}hozzáadása a tesztekhez, valamint a sorcommand = applyvagycommand = planeltávolítása, például:
# 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"
}
}
További erőforrások
A Databricks Szolgáltató dokumentációja a Terraform Registry webhelyén
A Terraform dokumentációja a Terraform webhelyén