Megosztás:


Migrálás a közvetlen üzembehelyezési motorra

Fontos

Ez a funkció kísérleti.

A Databricks Asset Bundles eredetileg a Databricks Terraform szolgáltatóra épült a bevezetés kezeléséhez. A függőségtől való eltávolodás érdekében azonban a Databricks CLI 0.279.0-s és újabb verziója két különböző üzembehelyezési motort támogat: a terraformot és a közvetlent. A közvetlen üzembehelyezési motor nem függ a Terraformtól, és hamarosan az alapértelmezett lesz. A Terraform üzembehelyezési motorja idővel elavulttá válik.

Mik a közvetlen üzembe helyezés előnyei?

Az új közvetlen üzembehelyezési motor a Databricks Go SDK-t használja, és a következő előnyöket biztosítja:

  • Nincs szükség a Terraform letöltésére és terraform-provider-databricks az üzembe helyezés előtt
  • Elkerüli a tűzfalakkal, proxykkal és egyéni szolgáltatói nyilvántartásokkal kapcsolatos problémákat
  • A változások részletes különbségei megtekinthetők a következővel: bundle plan -o json
  • Gyorsabb üzembe helyezés
  • Kevesebb idő az új csomagerőforrások kiadására, mert nincs szükség a Terraform-szolgáltató kiadásához való igazodásra

Hogyan kezdhetem el a közvetlen üzembe helyezést?

Az új közvetlen üzembehelyezési motor használatának megkezdése:

  • Meglévő csomagok esetén migrálja őket a következővel databricks bundle deployment migrate: .
  • Új csomagok esetén helyezze üzembe őket úgy, hogy a DATABRICKS_BUNDLE_ENGINE környezeti változó direct legyen.

Meglévő csomag migrálása

A közvetlen üzembehelyezési motor saját JSON-állapotfájlt használ. A séma eltér a Terraform JSON-állapotfájltól. A csomagtelepítési migrálási parancs a Terrform-állapotfájlt () a közvetlen üzembehelyezési állapotfájllá (terraform.tfstateresources.json) alakítja. A parancs beolvassa az azonosítókat a meglévő üzembe helyezésből.

  1. Teljes üzembe helyezés végrehajtása a Terraform használatával:

    databricks bundle deploy -t my_target
    
  2. Az üzembe helyezés migrálása:

    databricks bundle deployment migrate -t my_target
    
  3. Ellenőrizze, hogy a migrálás sikeres volt-e. A databricks bundle plan parancsnak sikeresnek kell lennie, és nem jelenik meg módosítás.

    databricks bundle plan -t my_target
    
    • Ha az ellenőrzés sikertelen, távolítsa el az új állapotfájlt:

      rm .databricks/bundle/my_target/resources.json
      
    • Ha az ellenőrzés sikeres volt, telepítse a csomagot az állapotfájl munkaterületre való szinkronizálásához:

      databricks bundle deploy -t my_target
      

Új csomag közvetlen üzembe helyezése

A bundle migrate parancs nem működik olyan csomagokon, amelyek soha nem lettek üzembe helyezve, mert nincs állapotfájl. Ehelyett állítsa be a környezeti változót DATABRICKS_BUNDLE_ENGINE , és telepítse a következőt:

DATABRICKS_BUNDLE_ENGINE=direct databricks bundle deploy -t my_target

Milyen változások történtek a közvetlen üzembehelyezési motorban?

Az új közvetlen üzembehelyezési motor többnyire ugyanúgy viselkedik, mint a Terrform üzembehelyezési motorja, de vannak különbségek.

Erőforrás állapotának különbségeinek kiszámítása

Ellentétben a Terraformmal, amely egyetlen erőforrás-állapotot (a helyi konfiguráció és a távoli állapot kombinációját) tart fenn, az új motor ezeket külön tárolja, és csak a helyi konfigurációt rögzíti az állapotfájlban.

Az erőforrások állapotának különbségszámítása két lépésben történik:

  1. A helyi csomagkonfiguráció összehasonlítva van a legutóbbi üzembe helyezéshez használt pillanatkép-konfigurációval. A távoli állapotnak nincs szerepe.
  2. A távoli állapot összehasonlítva van a legutóbbi üzembe helyezéshez használt pillanatkép-konfigurációval.

Az eredmény a következő:

  • databricks.yml az erőforrás-módosításokat a rendszer soha nem hagyja figyelmen kívül, és mindig elindítja a frissítést.
  • Az implementáció által nem kezelt erőforrásmezők nem inkonzisztens eredményt eredményeznek. Ezeket az erőforrásokat a közvetlen hajtómű sikeresen üzembe helyezi, de ez eltéréseket okozhat. Az üzembe helyezett erőforrások a következő terv vagy üzembe helyezés során frissülnek.

$resources helyettesítési keresés

A $resources leggyakoribb használata a helyettesítő azonosítók feloldása (például $resources.jobs.my_job.id), amelyek azonos módon viselkednek a Terraform és a közvetlen üzembe helyezési motorok között.

A közvetlen üzembehelyezési motorban (például$resources) a helyettesítés feloldása $resources.pipelines.my_pipeline.name azonban két lépésben történik:

  1. A helyi konfigurációban található mezőkre mutató hivatkozások a helyi konfigurációban megadott értékre lesznek feloldva.
  2. A helyi konfigurációban nem szereplő hivatkozásokat a távoli állapotból oldják meg. Ez az az állapot, amelyet egy adott erőforráshoz tartozó megfelelő GET kéréssel kell lekérni.

A $resource megoldásához használt séma a out.fields.txt fájlban érhető el. A kijelölt ALLSTATE mezők helyi feloldáshoz használhatók. Azok a mezők, amelyek ALL vagy REMOTE jelöléssel vannak ellátva, távoli megoldáshoz használhatók.