Bermigrasi ke mesin penyebaran langsung

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 json laporan dengan detail per kolom yang menjelaskan apa yang memicu tindakan tertentu.
  • Rencana yang dapat dijalankan ulang: bundle deploy --plan plan.json menjalankan 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:

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.

  1. Lakukan penyebaran penuh dengan Terraform:

    databricks bundle deploy -t my_target
    
  2. Migrasikan penerapan:

    databricks bundle deployment migrate -t my_target
    
  3. Verifikasi bahwa migrasi berhasil. Perintah databricks bundle plan harus berhasil dan seharusnya tidak menunjukkan perubahan.

    databricks bundle plan -t my_target
    

    Note

    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 deploy berikutnya. 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.json
      
    • Jika 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.engine pada databricks.yml Anda:

    bundle:
      engine: direct
    
  • Atur 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:

  1. Konfigurasi bundel lokal dibandingkan dengan konfigurasi rekam jepret yang digunakan untuk penyebaran terbaru. Status jarak jauh tidak memainkan peran.
  2. Status remote dibandingkan dengan konfigurasi snapshot yang digunakan untuk penyebaran terbaru.

Hasilnya adalah bahwa:

  • databricks.yml perubahan 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.yml Anda 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.yml Anda 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:

  1. Referensi yang menunjuk ke bidang yang ada dalam konfigurasi lokal diterjemahkan menjadi nilai yang disediakan dalam konfigurasi lokal.
  2. Referensi yang tidak ada dalam konfigurasi lokal akan diselesaikan dari status jarak jauh. Ini adalah status yang diambil menggunakan permintaan yang sesuai GET untuk 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.