Migrera till direktimplementeringsmotorn

sv-SE: Deklarativa Automationspaket byggdes ursprungligen ovanpå Databricks Terraform-provider för att hantera distributioner. Databricks CLI version 0.279.0 och senare stöder dock två olika distributionsmotorer: terraform och direct. Direktdistributionsmotorn ger betydande fördelar och är inte beroende av Terraform.

Nya paket som skapats med Databricks CLI version 1.3.0 och senare använder som standard direktdistributionsmotorn. Paket som fortfarande använder Terraform-distributionsmotorn migreras automatiskt till direktmotorn, så ingen konfiguration krävs. Se Börja använda direktdistribution.

För att förhindra automatisk migrering, sätt bundle.engine: terraform eller DATABRICKS_BUNDLE_ENGINE=terraform. Detta förhindrar automatisk migrering i alla Databricks CLI-versioner. På Databricks CLI-versioner upp till 1.19 fortsätter Terraform-motorn att användas. På Databricks CLI version 1.20.0 och senare resulterar det i ett fel. Se Distribuera ett nytt paket direkt.

Viktigt!

I Databricks CLI version 1.20.0 togs motorn för Terraform-distribution bort. Databricks CLI kan fortfarande automatiskt migrera bundles med Terraform state till den direkta motorn, men om automigreringen misslyckas avbryts distributionen. För att fortsätta använda Terraform-distributionsmotorn, lås till Databricks CLI version 1.19. Se Deklarativa Automation-paket kommer snart som standard att använda den direkta distributionsmotorn.

Fördelar med direktdistribution

Den nya direktdistributionsmotorn använder Databricks Go SDK och har följande fördelar:

  • Snabbare distributioner: Paketdistributioner är upp till 40% snabbare.
  • Mer kraftfull och detaljerad validering och planering: Detaljerade ändringar med hjälp bundle plan -o json av rapporter per fält som förklarar vad som utlöste en viss åtgärd.
  • Återuppspelbara planer: bundle deploy --plan plan.json kör en tidigare skapad plan, vilket säkerställer att endast godkända åtgärder når produktion och möjliggör snabbare driftsättningar eftersom planberäkningen hoppas över.
  • Enkel konfiguration: Problem med brandväggar, proxyservrar och anpassade providerregister undviks.
  • Fler resurser: Ytterligare resurser som kataloger, externa platser, AI Search-ändpunkter och Genie-utrymmen stöds.
  • Oföränderliga mappar: Tillgångar kan eventuellt distribueras till en oföränderlig, skrivskyddad mapp för manipuleringsskydd och distributionskonsekvens. Se immutable_folder.

Börja använda direktdriftsättning

Den direkta distributionsmotorn är standard för nya paket skapade med Databricks CLI version 1.3.0 och uppåt. I Databricks CLI version 1.14 och uppåt migreras bundles som använder Terraform-motorn automatiskt till direktmotorn vid driftsättning.

I Databricks CLI-versioner 1.8 och senare kan du migrera en bundle till direktmotorn genom att sätta engine: direct. Se Distribuera ett nytt paket direkt.

Distribuera ett nytt paket direkt

För att uttryckligen ställa in direktutrullningsmotorn, gör någon av följande:

  • Ange bundle.engine i din databricks.yml:

    bundle:
      engine: direct
    
  • DATABRICKS_BUNDLE_ENGINE Ange miljövariabeln och distribuera:

    DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target
    

Om både konfigurationen och miljövariabeln har angetts har konfigurationen företräde.

Jämförelse av distributionsmotor

Den nya direktdistributionsmotorn fungerar mestadels på samma sätt som Terrform-distributionsmotorn, men det finns vissa skillnader.

Beräkning av resurstillståndsdeiff

Till skillnad från Terraform som upprätthåller ett enda resurstillstånd (en blandning av lokal konfiguration och fjärrtillstånd) behåller den nya motorn dessa separata och registrerar endast lokal konfiguration i sin tillståndsfil.

Beräkningen av resurstillståndsdiff görs i två steg:

  1. Den lokala paketkonfigurationen jämförs med snapshotkonfigurationen som används för den senaste distributionen. Fjärrtillståndet spelar ingen roll.
  2. Fjärrstatus jämförs med den snapshot-konfiguration som används för den senaste distributionen.

Resultatet är att:

  • databricks.yml resursändringar ignoreras aldrig och utlöser alltid en uppdatering.
  • Resursfält som inte hanteras av implementeringen utlöser inte ett inkonsekvent resultatfel. Dessa resurser distribueras framgångsrikt av direktverktyget, men detta kan resultera i en avvikelse. De distribuerade resurserna uppdateras under nästa plan eller distribution.

Konfigurationsinställningar har tagits bort

De två motorerna hanterar inställningar som du tar bort från paketkonfigurationen på olika sätt:

  • Med Terraform-motorn lämnas motsvarande värde oförändrat i plattformen om du tar bort ett set-fält från din databricks.yml. Terraform hanterar endast fält som uttryckligen finns i konfigurationen, så ett borttaget fält behåller det värde som det hade vid tidpunkten för den senaste distributionen.
  • Om du tar bort ett angivet fält från direktmotorn databricks.yml återställs värdet till resursens standardvärde. Eftersom direktmotorn jämför din lokala konfiguration med den tidigare ögonblicksbilden behandlas ett fält som inte längre finns som en ändring och resursen uppdateras till standardvärdet vid nästa distribution.

Om du vill spara ett värde anger du det uttryckligen i konfigurationen i stället för att förlita dig på det tidigare distribuerade värdet.

Sökning efter resursersättning

Resursersättningar är tillgängliga för att lösa resurs-ID:t, till exempel ${resources.jobs.my_job.id}. Se Ersättningar. Lösningen på resursersättningar i direktdistributionsmotorn utförs i två steg:

  1. Referenser som pekar på fält som finns i den lokala konfigurationen matchas med det värde som anges i den lokala konfigurationen.
  2. Referenser som inte finns i den lokala konfigurationen löses från fjärrtillståndet. Det här är tillståndet som hämtas med lämplig GET begäran för en viss resurs.

Det schema som används för att lösa en ${resource.*} ersättning finns i filen out.fields.txt. Fälten som har markerats som ALL och STATE kan användas för lokal lösning. Fälten som har markerats som ALL eller REMOTE kan användas för fjärrmatchning.

Resurskompatibilitet

Följande resurser kräver direktdistributionsmotorn och stöds inte med Terraform-distributionsmotorn:

Dessutom är fältet lifecycle.started endast tillgängligt i direktdistributionsmotorn och endast för apps, clustersoch sql_warehouses. När den är inställd på true distribuerar den resursen i startat läge. Se livscykeln.