Bermigrasi ke mesin penyebaran langsung

Penting

Fitur ini ada di Pratinjau Umum.

Paket Otomasi Deklaratif awalnya dibuat menggunakan provider Databricks Terraform untuk mengelola deployment. Namun, dalam upaya untuk menjauh dari dependensi ini, Databricks CLI versi 0.279.0 ke atas mendukung dua mesin penyebaran yang berbeda: terraform dan langsung. Mesin penempatan langsung tidak bergantung pada Terraform dan akan segera menjadi default. Mesin penyebaran Terraform pada akhirnya tidak digunakan lagi.

Apa keuntungan dari penyebaran langsung?

Mesin penyebaran langsung baru menggunakan Databricks Go SDK dan memberikan manfaat berikut:

  • Tidak ada persyaratan untuk mengunduh Terraform dan terraform-provider-databricks sebelum penyebaran
  • Menghindari masalah dengan firewall, proksi, dan registri penyedia kustom
  • Detail perbedaan perubahan tersedia menggunakan bundle plan -o json
  • Penyebaran yang lebih cepat
  • Mengurangi waktu untuk merilis sumber daya bundel baru, karena tidak perlu selaras dengan rilis penyedia Terraform

Bagaimana cara mulai menggunakan penyebaran langsung?

Untuk mulai menggunakan mesin penyebaran langsung baru:

  • Untuk bundel yang ada, migrasikan menggunakan databricks bundle deployment migrate.
  • Untuk bundel baru, sebarkan dengan variabel lingkungan DATABRICKS_BUNDLE_ENGINE disetel ke direct.

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
    
    • 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.

Apa saja perubahan dalam mesin penyebaran langsung?

Mesin penyebaran langsung baru sebagian besar bertingkah sama dengan mesin penyebaran Terrform, tetapi ada beberapa perbedaan. Secara khusus, mesin langsung melacak status sumber daya lokal dan jarak jauh secara terpisah, dan menyelesaikan substitusi sumber daya dalam dua langkah.

Perhitungan perbedaan keadaan 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.

deteksi 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.