Jegyzet
Az oldalhoz való hozzáférés engedélyezést igényel. Próbálhatod be jelentkezni vagy könyvtárat váltani.
Az oldalhoz való hozzáférés engedélyezést igényel. Megpróbálhatod a könyvtár váltását.
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-databricksaz ü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_ENGINEkörnyezeti változódirectlegyen.
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.
Teljes üzembe helyezés végrehajtása a Terraform használatával:
databricks bundle deploy -t my_targetAz üzembe helyezés migrálása:
databricks bundle deployment migrate -t my_targetEllenőrizze, hogy a migrálás sikeres volt-e. A
databricks bundle planparancsnak sikeresnek kell lennie, és nem jelenik meg módosítás.databricks bundle plan -t my_targetHa az ellenőrzés sikertelen, távolítsa el az új állapotfájlt:
rm .databricks/bundle/my_target/resources.jsonHa 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:
- 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.
- 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.ymlaz 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:
- A helyi konfigurációban található mezőkre mutató hivatkozások a helyi konfigurációban megadott értékre lesznek feloldva.
- 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ő
GETké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.