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.
Paket Otomasi Deklaratif awalnya dibuat menggunakan provider Databricks Terraform untuk mengelola deployment. Namun, Databricks CLI versi 0.279.0 ke atas mendukung dua mesin penyebaran yang berbeda: terraform dan direct. Mesin penyebaran langsung memberikan keuntungan signifikan dan tidak bergantung pada Terraform.
Bundel baru yang dibuat menggunakan Databricks CLI versi 1.3.0 ke atas menggunakan mesin penyebaran langsung secara default. Bundel yang dibuat menggunakan versi CLI yang lebih lama dapat dimigrasikan dari mesin penyebaran Terraform ke mesin penyebaran langsung menggunakan langkah-langkah migrasi yang dijelaskan di halaman ini.
Penting
Databricks merekomendasikan migrasi ke mesin langsung karena mesin penyebaran Terraform akan segera tidak digunakan lagi dan mesin penyebaran langsung akan menjadi default. Lihat Bundel Otomatisasi Deklaratif akan segera default untuk menggunakan mesin penyebaran langsung.
Keuntungan penyebaran langsung
Mesin penyebaran langsung baru menggunakan Databricks Go SDK dan memiliki manfaat berikut:
- Penyebaran yang lebih cepat: Penyebaran bundel hingga 40% lebih cepat.
-
Validasi dan perencanaan yang lebih canggih dan terperinci: Diff perubahan yang terperinci menggunakan
bundle plan -o jsonlaporan dengan detail per kolom yang menjelaskan apa yang memicu tindakan tertentu. -
Rencana yang dapat dijalankan ulang:
bundle deploy --plan plan.jsonmenjalankan rencana yang telah dibuat sebelumnya, memastikan bahwa hanya aksi yang disetujui yang masuk ke produksi dan mempercepat penyebaran karena perhitungan rencana tidak perlu dilakukan. - Penyiapan sederhana: Masalah dengan firewall, proksi, dan registri penyedia kustom dihindari.
- Sumber daya lainnya: Sumber daya tambahan seperti katalog, lokasi eksternal, titik akhir Pencarian AI, dan ruang Genie didukung.
- Folder yang tidak dapat diubah: Aset dapat secara opsional disebarkan ke folder baca-saja yang tidak dapat diubah untuk perlindungan perubahan dan konsistensi penyebaran. Lihat immutable_folder.
Mulai menggunakan penyebaran langsung
Untuk mulai menggunakan mesin penyebaran langsung baru:
- Untuk bundel yang ada, migrasikan menggunakan
databricks bundle deployment migrate. Lihat Memigrasikan bundel yang ada. - Untuk bundel baru atau yang sudah ada, atur
engine: directdalam konfigurasi bundel Anda, atau aturDATABRICKS_BUNDLE_ENGINEvariabel lingkungan kedirect. Lihat Menyebarkan bundel baru secara langsung.
Memigrasikan bundel yang ada
Mesin penyebaran langsung menggunakan file status JSON sendiri. Skema ini berbeda dari file status Terraform JSON.
Perintahbundle deployment migrate mengonversi file status Terrform (terraform.tfstate) ke file status penyebaran langsung (resources.json). Perintah membaca ID dari implementasi yang ada.
Lakukan penyebaran penuh dengan Terraform:
databricks bundle deploy -t my_targetMigrasikan penerapan:
databricks bundle deployment migrate -t my_targetVerifikasi bahwa migrasi berhasil. Perintah
databricks bundle planharus berhasil dan seharusnya tidak menunjukkan perubahan.databricks bundle plan -t my_targetNote
Paket mungkin melaporkan perubahan pada sumber daya bahkan ketika konfigurasi lokal Anda cocok dengan sumber daya yang disebarkan. Ini dapat terjadi karena file status Terraform sebelumnya berisi bidang metadata yang diisi platform setelah penyebaran, yang tidak ada dalam konfigurasi bundel Anda. Perbedaan ini bukan penyimpangan konfigurasi nyata dan tidak mengubah perilaku pekerjaan. Mesin langsung mencocokkannya pada
bundle deployberikutnya. Untuk detail tentang cara mesin direct menghitung diff, lihat Perhitungan diff status sumber daya.Jika verifikasi gagal, hapus file status baru:
rm .databricks/bundle/my_target/resources.jsonJika verifikasi berhasil, sebarkan bundel untuk menyinkronkan file status ke ruang kerja:
databricks bundle deploy -t my_target
Menyebarkan bundel baru secara langsung
Perintah bundle migrate tidak berfungsi pada bundel yang belum pernah disebarkan karena tidak ada file status. Sebagai gantinya, lakukan salah satu hal berikut:
Tetapkan
bundle.enginepada databricks.yml Anda:bundle: engine: directAtur variabel lingkungan dan sebarkan
DATABRICKS_BUNDLE_ENGINE:DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
Jika konfigurasi dan variabel lingkungan diatur, konfigurasi lebih diutamakan.
Perbandingan mesin deployment
Mesin penyebaran langsung baru sebagian besar bertingkah sama dengan mesin penyebaran Terrform, tetapi ada beberapa perbedaan.
Perhitungan perbedaan status sumber daya
Tidak seperti Terraform yang mempertahankan satu status sumber daya (campuran konfigurasi lokal dan status jarak jauh), mesin baru ini tetap terpisah dan hanya merekam konfigurasi lokal dalam file statusnya.
Perhitungan diff status sumber daya dilakukan dalam dua langkah:
- Konfigurasi bundel lokal dibandingkan dengan konfigurasi rekam jepret yang digunakan untuk penyebaran terbaru. Status jarak jauh tidak memainkan peran.
- Status remote dibandingkan dengan konfigurasi snapshot yang digunakan untuk penyebaran terbaru.
Hasilnya adalah bahwa:
-
databricks.ymlperubahan sumber daya tidak pernah diabaikan dan akan selalu memicu pembaruan. - Bidang sumber daya yang tidak ditangani oleh implementasi tidak memicu kesalahan hasil yang tidak konsisten. Sumber daya ini berhasil disebarkan oleh mesin langsung, tetapi ini dapat mengakibatkan penyimpangan. Sumber daya yang disebarkan diperbarui pada rencana atau penyebaran berikutnya.
Pengaturan konfigurasi yang dihapus
Dua mesin menangani pengaturan yang Anda hapus dari konfigurasi bundel Anda secara berbeda:
- Dengan mesin Terraform, menghapus kolom yang telah disetel dari
databricks.ymlAnda akan membiarkan nilai terkait tetap tidak berubah di platform. Terraform hanya mengelola bidang yang secara eksplisit ada dalam konfigurasi, sehingga bidang yang dihapus mempertahankan nilai apa pun yang dimilikinya pada saat penyebaran terakhir. - Dengan direct engine, menghapus kolom set dari
databricks.ymlAnda akan mengembalikan nilainya ke nilai bawaan resource. Karena mesin langsung membandingkan konfigurasi lokal Anda dengan rekam jepret sebelumnya, bidang yang tidak lagi ada diperlakukan sebagai perubahan, dan sumber daya diperbarui ke nilai defaultnya pada penyebaran berikutnya.
Untuk mempertahankan nilai, atur secara eksplisit dalam konfigurasi Anda daripada mengandalkan nilai yang disebarkan sebelumnya.
Pencarian substitusi sumber daya
Substitusi sumber daya tersedia untuk menyelesaikan ID sumber daya, misalnya, ${resources.jobs.my_job.id}. Lihat Penggantian. Penyelesaian substitusi sumber daya di mesin penerapan langsung dilakukan dalam dua langkah:
- Referensi yang menunjuk ke bidang yang ada dalam konfigurasi lokal diterjemahkan menjadi nilai yang disediakan dalam konfigurasi lokal.
- Referensi yang tidak ada dalam konfigurasi lokal akan diselesaikan dari status jarak jauh. Ini adalah status yang diambil menggunakan permintaan yang sesuai
GETuntuk sumber daya tertentu.
Skema yang digunakan untuk mengatasi ${resource.*} substitusi ada dalam file out.fields.txt. Bidang yang ditandai sebagai ALL dan STATE dapat digunakan untuk resolusi lokal. Bidang yang ditandai sebagai ALL atau REMOTE dapat digunakan untuk resolusi jarak jauh.
Kompatibilitas sumber daya
Sumber daya berikut memerlukan mesin penyebaran langsung dan tidak didukung dengan mesin penyebaran Terraform:
Selain itu, bidang lifecycle.started hanya tersedia di mesin penerapan langsung, dan hanya untuk apps, clusters, dan sql_warehouses. Saat diatur ke true, ia menyebarkan sumber daya dalam mode mulai. Lihat siklus hidup.