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 skapats med tidigare versioner av CLI kan migreras från Terraform-distributionsmotorn till den direkta distributionsmotorn med hjälp av migreringsstegen som beskrivs på den här sidan.

Viktigt!

Databricks rekommenderar att du migrerar till direktmotorn eftersom Terraform-distributionsmotorn snart kommer att bli inaktuell och direktdistributionsmotorn blir standard. 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 direktdistribution

Så här börjar du använda den nya direktdistributionsmotorn:

  • För befintliga paket migrerar du dem med hjälp av databricks bundle deployment migrate. Se Migrera ett befintligt paket.
  • För nya eller befintliga paket anger du engine: direct i paketkonfigurationen eller anger DATABRICKS_BUNDLE_ENGINE miljövariabeln till direct. Se Distribuera ett nytt paket direkt.

Migrera ett befintligt paket

Direktdistributionsmotorn använder sin egen JSON-tillståndsfil. Schemat skiljer sig från Terraform JSON-tillståndsfilen. Kommandotbundle deployment migrate konverterar Terrform-tillståndsfilen (terraform.tfstate) till filen för direkt distributionstillstånd (resources.json). Kommandot läser ID:n från den befintliga distributionen.

  1. Utför en fullständig distribution med Terraform:

    databricks bundle deploy -t my_target
    
  2. Migrera utplaceringen:

    databricks bundle deployment migrate -t my_target
    

    Note

    I Databricks CLI körs bundle deployment migratebundle plan och stoppar migreringen om planen rapporterar några åtgärder. I detta fall, omplacera och försök migreringen igen. Om det fortfarande misslyckas kan du hoppa över plankontrollen med .--noplancheck

  3. Kontrollera att migreringen lyckades. Kör databricks bundle plan, vilket borde lyckas och rapportera inga handlingar.

    databricks bundle plan -t my_target
    

    Note

    Planen kan rapportera ändringar på resurser även när den lokala konfigurationen matchar den distribuerade resursen. Detta kan inträffa eftersom den tidigare Terraform-tillståndsfilen innehåller metadatafält som plattformen fyller i efter distributionen, som inte finns i paketkonfigurationen. Dessa skillnader är inte verkliga konfigurationsavvikelser och ändrar inte jobbbeteendet. Den direkta motorn synkroniserar dem på nästa bundle deploy. Mer information om hur direktmotorn beräknar differenser finns i Beräkning av skillnader i resurstillstånd.

    • Om verifieringen misslyckas tar du bort den nya tillståndsfilen:

      rm .databricks/bundle/my_target/resources.json
      
    • Om verifieringen lyckas distribuerar du paketet för att synkronisera tillståndsfilen till arbetsytan:

      databricks bundle deploy -t my_target
      

Distribuera ett nytt paket direkt

Kommandot bundle migrate fungerar inte på paket som aldrig har distribuerats eftersom det inte finns någon tillståndsfil. Gör i stället något 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.