Penyedia Databricks CDK Terraform
Catatan
Artikel ini membahas Cloud Development Kit for Terraform (CDKTF), yang dikembangkan oleh pihak ketiga. Untuk menghubungi penyedia, lihat Komunitas Terraform.
Artikel ini menunjukkan kepada Anda cara menggunakan Python bersama dengan Penyedia Databricks CDK Terraform dan Cloud Development Kit for Terraform (CDKTF). CDKTF adalah platform pihak ketiga, infrastruktur sebagai kode (IaC) yang memungkinkan Anda membuat, menyebarkan, dan mengelola sumber daya Azure Databricks dengan menggunakan bahasa pemrograman, alat, dan praktik teknik yang sudah dikenal. Meskipun artikel ini menunjukkan cara menggunakan Python, CDKTF mendukung bahasa tambahan seperti TypeScript, Java, C#, dan Go.
Penyedia Terraform CDK Databricks didasarkan pada penyedia Databricks Terraform. Untuk informasi selengkapnya, lihat Terraform Cloud. CDKTF didasarkan pada AWS Cloud Development Kit (AWS CDK).
Persyaratan
Anda harus memiliki ruang kerja Azure Databricks, karena artikel ini menyebarkan sumber daya ke ruang kerja yang ada.
Pada komputer pengembangan lokal, Anda harus menginstal hal berikut:
Terraform, versi 1.1 atau lebih tinggi. Untuk memeriksa apakah Anda telah menginstal Terraform, dan untuk memeriksa versi yang diinstal, jalankan perintah
terraform -v
dari terminal Anda atau dengan PowerShell. Instal Terraform, jika Anda belum menginstalnya.terraform -v
Node.js, versi 16.13 atau lebih tinggi, dan npm. Untuk memeriksa apakah Anda telah Node.js dan
npm
menginstal, dan untuk memeriksa versi yang diinstal, jalankan perintahnode -v
dannpm -v
. Versi terbaru Node.js sudah menyertakannpm
. Instal Node.js dan npm dengan menggunakan Node Version Manager (nvm), jika Anda tidak memiliki Node.js dannpm
sudah diinstal.node -v npm -v
CDKTF CLI. Untuk memeriksa apakah Anda telah menginstal CDKTF CLI, dan untuk memeriksa versi yang diinstal, jalankan perintah
cdktf --version
. Instal CDKTF CLI dengan menggunakan npm, jika Anda belum menginstalnya.cdktf --version
Tip
Anda juga dapat menginstal CDKTF CLI di macOS dengan Homebrew. Lihat Menginstal CDKTF.
Python versi 3.7 atau lebih tinggi dan pipenv versi 2021.5.29 atau lebih tinggi. Untuk memeriksa apakah Anda memiliki Python dan
pipenv
diinstal, dan untuk memeriksa versi yang diinstal, jalankan perintahpython --version
danpipenv --version
. Instal Python dan instal pipenv, jika belum diinstal.python --version pipenv --version
Autentikasi Azure Databricks dikonfigurasi untuk jenis autentikasi yang didukung yang ingin Anda gunakan. Lihat Autentikasi dalam dokumentasi penyedia Databricks Terraform.
Langkah 1: Membuat proyek CDKTF
Dalam langkah ini, pada komputer pengembangan lokal Anda, Anda menyiapkan struktur direktori yang diperlukan untuk proyek CDKTF. Anda kemudian membuat proyek CDKTF dalam struktur direktori ini.
Buat direktori kosong untuk proyek CDKTF Anda, lalu beralihlah ke direktori tersebut. Jalankan perintah berikut di terminal Anda atau dengan PowerShell:
Unix, Linux, dan macOS
mkdir cdktf-demo cd cdktf-demo
Windows
md cdktf-demo cd cdktf-demo
Buat proyek CDKTF dengan menjalankan perintah berikut:
cdktf init --template=python --local
Saat dimintai Nama Proyek, terima nama
cdktf-demo
proyek default dengan menekan Enter.Saat dimintai Deskripsi Proyek, terima deskripsi proyek default dengan menekan Enter.
Jika diminta Apakah Anda ingin memulai dari proyek Terraform yang sudah ada, masukkan
N
dan tekan Enter.Jika diminta Apakah Anda ingin mengirim laporan crash ke tim CDKTF, masukkan
n
dan tekan Enter.
CDKTF membuat file dan subdirektori berikut di direktori Anda cdktf-demo
:
-
.gitignore
, yang merupakan daftar file dan direktori yang diabaikan Git jika Anda ingin mendorong proyek ini ke repositori Git jarak jauh. -
cdktf.json
, yang berisi pengaturan konfigurasi untuk proyek CDKTF Anda. Lihat File Konfigurasi untuk informasi selengkapnya tentang pengaturan konfigurasi. -
help
, yang berisi informasi tentang beberapa langkah berikutnya yang dapat Anda ambil untuk bekerja dengan proyek CDKTF Anda. -
main-test.py
, yang berisi pengujian unit pendukung yang dapat Anda tulis untuk proyek CDKTF Anda. Lihat Pengujian Unit untuk informasi selengkapnya tentang pengujian unit. -
main.py
, yang berisi kode Python yang Anda tulis untuk proyek CDKTF Anda. -
Pipfile
danPipfile.lock
, yang mengelola dependensi kode untuk proyek CDKTF Anda.
Langkah 2: Tentukan sumber daya
Dalam langkah ini, Anda menggunakan penyedia Terraform CDK Databricks untuk menentukan buku catatan dan pekerjaan untuk menjalankan buku catatan tersebut.
Instal dependensi proyek: menggunakan
, instal ke proyek CDKTF Anda Penyedia Databricks CDK Terraform untuk menghasilkan sumber daya Azure Databricks. Untuk melakukan ini, jalankan hal berikut: pipenv install cdktf-cdktf-provider-databricks
Ganti konten
main.py
file dengan kode berikut. Kode ini mengautentikasi CDKTF dengan ruang kerja Azure Databricks Anda, lalu menghasilkan buku catatan bersama dengan pekerjaan untuk menjalankan buku catatan. Untuk melihat dokumentasi sintaks untuk kode ini, lihat referensi konstruksi penyedia Terraform CDK Databricks untuk Python.#!/usr/bin/env python from constructs import Construct from cdktf import ( App, TerraformStack, TerraformOutput ) from cdktf_cdktf_provider_databricks import ( data_databricks_current_user, job, notebook, provider ) import vars from base64 import b64encode class MyStack(TerraformStack): def __init__(self, scope: Construct, ns: str): super().__init__(scope, ns) provider.DatabricksProvider( scope = self, id = "databricksAuth" ) current_user = data_databricks_current_user.DataDatabricksCurrentUser( scope = self, id_ = "currentUser" ) # Define the notebook. my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8") ) # Define the job to run the notebook. my_job = job.Job( scope = self, id_ = "job", name = f"{vars.resource_prefix}-job", task = [ job.JobTask( task_key = f"{vars.resource_prefix}-task", new_cluster = job.JobTaskNewCluster( num_workers = vars.num_workers, spark_version = vars.spark_version, node_type_id = vars.node_type_id ), notebook_task = job.JobTaskNotebookTask( notebook_path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py" ), email_notifications = job.JobTaskEmailNotifications( on_success = [ current_user.user_name ], on_failure = [ current_user.user_name ] ) ) ] ) # Output the notebook and job URLs. TerraformOutput( scope = self, id = "Notebook URL", value = my_notebook.url ) TerraformOutput( scope = self, id = "Job URL", value = my_job.url ) app = App() MyStack(app, "cdktf-demo") app.synth()
Buat file bernama
vars.py
dalam direktori yang sama denganmain.py
. Ganti nilai berikut dengan nilai Anda sendiri untuk menentukan awalan sumber daya dan pengaturan kluster seperti jumlah pekerja, string versi runtime Spark, dan jenis node .#!/usr/bin/env python resource_prefix = "cdktf-demo" num_workers = 1 spark_version = "14.3.x-scala2.12" node_type_id = "Standard_D3_v2"
Langkah 3: Menyebarkan sumber daya
Dalam langkah ini, Anda menggunakan CDKTF CLI untuk menyebarkan, ke ruang kerja Azure Databricks yang sudah ada, buku catatan yang ditentukan, dan pekerjaan untuk menjalankan buku catatan tersebut.
Hasilkan kode Terraform yang setara untuk proyek CDKTF Anda. Untuk melakukan hal ini, jalankan perintah
cdktf synth
.cdktf synth
Sebelum membuat perubahan, Anda dapat meninjau perubahan sumber daya yang tertunda. Jalankan berikut ini:
cdktf diff
Sebarkan buku catatan dan pekerjaan dengan menjalankan
cdktf deploy
perintah .cdktf deploy
Saat diminta untuk Menyetujui, tekan Enter. Terraform membuat dan menyebarkan buku catatan dan pekerjaan ke ruang kerja Anda.
Langkah 4: Berinteraksi dengan sumber daya
Dalam langkah ini, Anda menjalankan pekerjaan di ruang kerja Azure Databricks Anda, yang menjalankan buku catatan yang ditentukan.
- Untuk menampilkan buku catatan yang akan dijalankan pekerjaan di ruang kerja Anda, salin tautan URL Buku Catatan yang muncul di output
cdk deploy
perintah dan tempelkan ke bilah alamat browser web Anda. - Untuk menampilkan pekerjaan yang menjalankan buku catatan di ruang kerja Anda, salin tautan URL Pekerjaan yang muncul di output
cdk deploy
perintah dan tempelkan ke bilah alamat browser web Anda. - Untuk menjalankan pekerjaan, klik tombol Jalankan sekarang di halaman pekerjaan.
(Opsional) Langkah 5: Membuat perubahan pada sumber daya
Dalam langkah opsional ini, Anda mengubah kode buku catatan, menyebarkan ulang buku catatan yang diubah, lalu menggunakan pekerjaan untuk menjalankan ulang buku catatan yang diubah.
Jika Anda tidak ingin membuat perubahan apa pun pada buku catatan, lewati ke Langkah 6: Bersihkan.
main.py
Dalam file, ubahnotebook
deklarasi variabel dari yang berikut:my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b"display(spark.range(10))").decode("UTF-8") )
Untuk hal berikut:
my_notebook = notebook.Notebook( scope = self, id_ = "notebook", path = f"{current_user.home}/CDKTF/{vars.resource_prefix}-notebook.py", language = "PYTHON", content_base64 = b64encode(b''' data = [ { "Category": 'A', "ID": 1, "Value": 121.44 }, { "Category": 'B', "ID": 2, "Value": 300.01 }, { "Category": 'C', "ID": 3, "Value": 10.99 }, { "Category": 'E', "ID": 4, "Value": 33.87} ] df = spark.createDataFrame(data) display(df) ''').decode("UTF-8") )
Catatan
Pastikan bahwa baris kode antara dengan tanda kutip tiga (
'''
) diselaraskan dengan tepi editor kode Anda, seperti yang ditunjukkan. Jika tidak, Terraform akan menyisipkan spasi kosong tambahan ke dalam buku catatan yang dapat menyebabkan kode Python baru gagal dijalankan.Regenerasi kode Terraform yang setara untuk proyek CDKTF Anda. Untuk melakukan ini, jalankan hal berikut:
cdktf synth
Sebelum membuat perubahan, Anda dapat meninjau perubahan sumber daya yang tertunda. Jalankan berikut ini:
cdktf diff
Sebarkan perubahan buku catatan dengan menjalankan
cdktf deploy
perintah .cdktf deploy
Saat diminta untuk Menyetujui, tekan Enter. Terraform mengubah konten buku catatan.
Untuk menampilkan buku catatan yang diubah yang akan dijalankan pekerjaan di ruang kerja Anda, refresh buku catatan yang Anda buka sebelumnya, atau salin tautan URL Buku Catatan
yang muncul di output perintah dan tempelkan ke bilah alamat browser web Anda. Untuk menampilkan pekerjaan yang menjalankan buku catatan yang diubah di ruang kerja Anda, refresh pekerjaan yang Anda buka sebelumnya, atau salin tautan URL Pekerjaan
yang muncul di output perintah dan tempelkan ke bilah alamat browser web Anda. Untuk menjalankan pekerjaan, klik tombol Jalankan sekarang di halaman pekerjaan.
Langkah 6: Bersihkan
Dalam langkah ini, Anda menggunakan CDKTF CLI untuk menghapus buku catatan dan pekerjaan dari ruang kerja Azure Databricks Anda.
Hapus sumber daya dari ruang kerja Anda dengan menjalankan perintah
cdktf destroy
:cdktf destroy
Saat diminta untuk Menyetujui, tekan Enter. Terraform menghapus sumber daya dari ruang kerja Anda.
Pengujian
Anda dapat menguji proyek CDKTF sebelum menyebarkannya. Lihat Pengujian Unit dalam dokumentasi CDKTF.
Untuk proyek CDKTF berbasis Python, Anda dapat menulis dan menjalankan pengujian dengan menggunakan pytest kerangka kerja Contoh file berikut bernama test_main.py
menguji kode CDKTF dalam file sebelumnya main.py
artikel ini. Pengujian pertama memeriksa apakah notebook proyek akan berisi representasi konten buku catatan yang dikodekan Base64 yang diharapkan. Pengujian kedua memeriksa apakah pekerjaan proyek akan berisi nama pekerjaan yang diharapkan. Untuk menjalankan pengujian ini, jalankan pytest
perintah dari direktori akar proyek.
from cdktf import App, Testing
from cdktf_cdktf_provider_databricks import job, notebook
from main import MyStack
class TestMain:
app = App()
stack = MyStack(app, "cdktf-demo")
synthesized = Testing.synth(stack)
def test_notebook_should_have_expected_base64_content(self):
assert Testing.to_have_resource_with_properties(
received = self.synthesized,
resource_type = notebook.Notebook.TF_RESOURCE_TYPE,
properties = {
"content_base64": "ZGlzcGxheShzcGFyay5yYW5nZSgxMCkp"
}
)
def test_job_should_have_expected_job_name(self):
assert Testing.to_have_resource_with_properties(
received = self.synthesized,
resource_type = job.Job.TF_RESOURCE_TYPE,
properties = {
"name": "cdktf-demo-job"
}
)
Sumber daya lainnya
- Referensi konstruksi penyedia Terraform CDK Databricks untuk TypeScript, Python, Java, C#, dan Go
- Mengaktifkan pengelogan untuk aplikasi CDKTF