Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
HashiCorp Terraform adalah alat sumber terbuka populer untuk menciptakan infrastruktur cloud yang aman dan dapat diprediksi di beberapa penyedia cloud. Anda dapat menggunakan penyedia Databricks Terraform untuk mengelola ruang kerja Azure Databricks dan infrastruktur cloud terkait menggunakan alat yang fleksibel dan canggih. Tujuan dari penyedia Databricks Terraform adalah untuk mendukung semua API Databricks REST, mendukung otomatisasi aspek yang paling rumit dalam menyebarkan dan mengelola platform data Anda. Pelanggan Databricks menggunakan penyedia Databricks Terraform untuk menyebarkan dan mengelola kluster dan pekerjaan serta untuk mengonfigurasi akses data. Anda menggunakan Penyedia Azure untuk memprovisikan ruang kerja Azure Databricks.
Memulai
Di bagian ini, Anda menginstal dan mengonfigurasi persyaratan untuk menggunakan Terraform dan penyedia Databricks Terraform di komputer pengembangan lokal Anda. Anda kemudian mengonfigurasi autentikasi Terraform. Mengikuti bagian ini, artikel ini menyediakan konfigurasi sampel yang dapat Anda coba untuk memprovisikan notebook, kluster, dan pekerjaan di Azure Databricks untuk menjalankan notebook pada kluster di dalam ruang kerja Azure Databricks yang sudah ada.
Persyaratan
Anda harus memiliki Terraform CLI. Lihat Unduh Terraform di situs web Terraform.
Anda harus memiliki proyek Terraform. Di terminal Anda, buat direktori kosong lalu beralih ke sana. (Setiap set terpisah file konfigurasi Terraform harus berada di direktorinya sendiri, yang disebut proyek Terraform.) Misalnya:
mkdir terraform_demo && cd terraform_demo.mkdir terraform_demo && cd terraform_demoSertakan konfigurasi Terraform untuk proyek Anda dalam satu atau beberapa file konfigurasi di proyek Terraform Anda. Untuk informasi tentang sintaks file konfigurasi, lihat Dokumentasi Bahasa Terraform di situs web Terraform.
Anda harus menambahkan dependensi untuk penyedia Databricks Terraform ke proyek Terraform Anda. Tambahkan yang berikut ini ke salah satu file konfigurasi di proyek Terraform Anda:
terraform { required_providers { databricks = { source = "databricks/databricks" } } }Anda harus mengonfigurasi autentikasi untuk proyek Terraform Anda. Lihat Autentikasi dalam dokumentasi penyedia Databricks Terraform.
Contoh konfigurasi
Bagian ini menyediakan konfigurasi sampel yang dapat Anda eksperimen untuk menyediakan buku catatan Azure Databricks, kluster, dan pekerjaan untuk menjalankan buku catatan di kluster, di ruang kerja Azure Databricks yang sudah ada. Ini mengasumsikan bahwa Anda telah menyiapkan persyaratan, serta membuat proyek Terraform dan mengonfigurasi proyek dengan autentikasi Terraform seperti yang dijelaskan di bagian sebelumnya.
Buat file bernama
me.tfdi proyek Terraform Anda, dan tambahkan kode berikut. File ini mendapatkan informasi tentang pengguna saat ini (Anda):# Retrieve information about the current user. data "databricks_current_user" "me" {}Buat file lain bernama
notebook.tf, dan tambahkan kode berikut. File ini mewakili buku catatan.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 }Buat file lain bernama
notebook.auto.tfvars, dan tambahkan kode berikut. File ini menentukan properti buku catatan.notebook_subdirectory = "Terraform" notebook_filename = "notebook-getting-started.py" notebook_language = "PYTHON"Buat file lain bernama
notebook-getting-started.py, dan tambahkan kode berikut. File ini mewakili isi buku catatan.display(spark.range(10))Buat file lain bernama
cluster.tf, dan tambahkan kode berikut. File ini mewakili kluster.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 }Buat file lain bernama
cluster.auto.tfvars, dan tambahkan kode berikut. File ini menentukan properti kluster.cluster_name = "My Cluster" cluster_autotermination_minutes = 60 cluster_num_workers = 1Buat file lain bernama
job.tf, dan tambahkan kode berikut. File ini mewakili pekerjaan yang menjalankan buku catatan pada kluster.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 }Buat file lain bernama
job.auto.tfvars, dan tambahkan kode berikut. File ini menentukan properti pekerjaan.job_name = "My Job" task_key = "my_task"Jalankan
terraform plan. Jika ada kesalahan, perbaiki, lalu jalankan perintah lagi.Jalankan
terraform apply.Verifikasi bahwa buku catatan, kluster, dan pekerjaan telah dibuat: dalam output dari perintah
terraform apply, temukan URL untuknotebook_url,cluster_url, danjob_url, dan buka.Jalankan pekerjaan: pada halaman Pekerjaan , klik Jalankan sekarang. Setelah pekerjaan selesai, periksa kotak masuk email Anda.
Setelah selesai dengan sampel ini, hapus buku catatan, kluster, dan pekerjaan dari ruang kerja Azure Databricks dengan menjalankan
terraform destroy.Catatan
Untuk informasi selengkapnya tentang
terraform planperintah ,terraform apply, danterraform destroy, lihat Dokumentasi Terraform CLI dalam dokumentasi Terraform.Verifikasi bahwa buku catatan, kluster, dan pekerjaan dihapus: refresh halaman buku catatan, kluster, dan Pekerjaan untuk setiap menampilkan pesan bahwa sumber daya tidak dapat ditemukan.
Pengujian
Uji konfigurasi Terraform Anda sebelum atau sesudah Anda menyebarkannya. Anda dapat menjalankan pengujian yang dianalogikan ke pengujian unit sebelum menyebarkan sumber daya. Anda juga dapat menjalankan pengujian yang dianalogikan dengan pengujian integrasi setelah sumber daya disebarkan. Lihat Pengujian dalam dokumentasi Terraform.
Jalankan pengujian yang dianalogikan untuk pengujian integrasi terhadap konfigurasi sampel artikel ini dengan mengikuti proses ini:
Buat file bernama
cluster.tftest.hcl, dan tambahkan kode berikut. File ini menguji apakah kluster yang disebarkan memiliki nama kluster yang diharapkan.# 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" } }Buat file bernama
job.tftest.hcl, dan tambahkan kode berikut. File ini menguji apakah pekerjaan yang disebarkan memiliki nama pekerjaan yang diharapkan.run "job_name_test" { command = apply assert { condition = databricks_job.this.name == var.job_name error_message = "Job name did not match expected name" } }Buat file bernama
notebook.tftest.hcl, dan tambahkan kode berikut. File ini menguji apakah notebook yang disebarkan memiliki jalur ruang kerja yang diharapkan.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" } }Jalankan
terraform test. Terraform menyebarkan setiap sumber daya ke ruang kerja Azure Databricks, menjalankan setiap pengujian terkait dan melaporkan hasil pengujiannya, lalu merobek sumber daya yang disebarkan.
Jalankan pengujian yang dianalogikan ke pengujian unit terhadap konfigurasi sampel artikel ini dengan proses berikut:
- Ubah baris
command = applydi setiap pengujian sebelumnya menjadicommand = plan, lalu jalankanterraform test. Terraform menjalankan setiap pengujian terkait dan melaporkan hasil pengujiannya tetapi tidak menyebarkan sumber daya apa pun. - Mensimulasikan penyedia Terraform untuk Databricks, yang memungkinkan Anda menjalankan
terraform testtanpa menyebarkan sumber daya dan tanpa memerlukan kredensial otentikasi apa pun. Lihat Tiruan dalam dokumentasi Terraform. Untuk menjalankan pengujian tiruan, salah satu pendekatannya adalah menambahkan barismock_provider "databricks" {}ke pengujian Anda dan untuk menghapus bariscommand = applyataucommand = plan, misalnya:
# 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"
}
}
Langkah berikutnya
- Mengelola sumber daya ruang kerja
- Membuat kluster, buku catatan, dan pekerjaan
- Mengotomatiskan penyiapan Katalog Unity
- Mengontrol akses ke tabel Databricks SQL
- Membuat dasbor sampel
Sumber Daya Tambahan:
- Dokumentasi Penyedia Databricks di situs web Registri Terraform
- Dokumentasi Terraform di situs web Terraform
- Repositori Github contoh Databricks Terraform