A skálázás érdekében a DevOps-csapatok mindig keresik a kód megbízható és megismételhető folyamatokkal történő gyors üzembe helyezésének módját. A felhővel és az infrastruktúrával kapcsolatban ez a folyamat egyre inkább a kódkénti infrastruktúra (IaC) használatával valósul meg. Az IaC-eszközök az általános célú eszközöktől az adott környezetekhez szánt eszközökig terjednek. A Terraform egy példa az előbbire, míg a Bicep az Azure-sal kapcsolatos feladatok kezelésére lett kialakítva.
Ebben a cikkben a Bicep és a Terraform kilenc infrastruktúráját és integrációs funkcióját hasonlítjuk össze. Ezeknek a különbségeknek a megértése segít eldönteni, hogy melyik eszköz támogatja a legjobban az infrastruktúrát és a folyamatokat.
Állapot és háttérrendszer
Mind a Terraform, mind a Bicep a kívánt állapotkonfiguráció (DSC), amely megkönnyíti az informatikai és fejlesztési infrastruktúra kódként való kezelését. A Terraform tárolja a felügyelt infrastruktúra és konfiguráció állapotát. A Terraform ezeket az információkat arra használja, hogy valós erőforrásokat képezze le a konfigurációhoz, nyomon követheti a metaadatokat, és javíthatja a nagyobb infrastruktúrák teljesítményét. Az állapot egy helyi fájlban van tárolvaterraform.tfstate
, de távolról is tárolható. Az állapotfájlok biztonsági mentése és védelme kritikus fontosságú. A Terraformhoz hasonlóan a Bicep is deklaratív és célkereső. A Bicep azonban nem tárolja az állapotot. Ehelyett a Bicep növekményes üzembe helyezésre támaszkodik.
Infrastruktúra-célok
A Felhőinfrastruktúra kezeléséhez a Bicep és a Terraform összehasonlításakor fontos figyelembe venni a célfelhő-környezetet:
- Csak Azure-beli
- Több- vagy hibridfelhők
A Bicep Azure-specifikus, és nem más felhőszolgáltatásokkal való használatra készült.
Ha a cél az üzembe helyezés automatizálása a következő környezetek bármelyikére, akkor a Terraform valószínűleg a jobb megoldás:
- Virtualizálási környezetek
- Többfelhős forgatókönyvek – például az Azure és más felhők
- Helyszíni számítási feladatok
A Terraform más felhőszolgáltatókkal vagy API-kkal is együttműködik a szolgáltatóknak nevezett beépülő modulok használatával. Számos Terraform Azure-szolgáltató teszi lehetővé az Azure-infrastruktúra kezelését. Terraform-konfiguráció kódolásakor meg kell adnia a használni kívánt szolgáltatókat. A terraform init futtatásakor a megadott szolgáltató telepítve lesz, és használható a kódból.
A parancssori felület (CLI) eszközei kulcsfontosságú szerepet játszanak az automatizálási technológia implementálásán és felügyeletén keresztüli vezénylésben. A Bicep és a Terraform is kínál CLI-eszközöket.
A Bicep integrálható az Azure CLI-vel, így a fejlesztők a következő parancsokat használhatják az
:
az bicep
: Az az bicep parancsokkal olyan feladatokat hajthat végre, mint a Bicep telepítése, valamint a Bicep-fájlok létrehozása és közzététele.
az deployment
: Az Erőforrások üzembe helyezése a Bicep-lel és az Azure CLI-vel című cikk azt ismerteti, hogyan használhatja az Azure CLI-t Bicep-fájlokkal az erőforrások Azure-ban való üzembe helyezéséhez.
A Terraform CLI lehetővé teszi az olyan feladatok végrehajtását, mint a Terraform-kód ellenőrzése és formázása, valamint végrehajtási terv létrehozása és alkalmazása.
A Bicep egy olyan funkciót is biztosít, amely megkönnyíti a Bicep és az Azure Pipelines integrálását. A Terraformhoz hasonló funkció érhető el, de le kell töltenie és telepítenie kell a Visual Studio Azure Pipelines Terraform Tasks bővítményét. A telepítés után a Terraform CLI-parancsokat az Azure Pipelinesból futtathatja. Emellett a Terraform és a Bicep is támogatja a GitHub Actionst a szoftver buildjeinek, tesztjeinek és üzembe helyezésének automatizálásához.
Feldolgozás
A Bicep és a Terraform között az üzemelő példányok hatékonysága és optimalizálása szempontjából van néhány fontos különbség. A Bicep esetében a feldolgozás az Azure-infrastruktúra alapvető szolgáltatásoldalán belül történik. Ez a funkció olyan előnyöket kínál, mint például az előzetes feldolgozás a szabályzat ellenőrzéséhez vagy a több példány régión belüli üzembe helyezésének rendelkezésre állásához. A Terraform használatával a feldolgozás a Terraform-ügyfélen belül történik. Az előfeldolgozás tehát nem jár az Azure-ba irányuló hívásokkal, mivel az állapot és a HCL (HashiCorp Language) használatával határozza meg a szükséges módosításokat.
Hitelesítés
Az Azure-hitelesítési funkciók a Bicep és a Terraform között eltérőek. A Bicep-hez egy engedélyezési jogkivonatot ad a rendszer a Bicep-fájl és az ARM-sablon elküldésére irányuló kérés során. Az ARM biztosítja, hogy ön is rendelkezik engedéllyel az üzembe helyezés létrehozásához és az erőforrások a megadott sablonon belüli üzembe helyezéséhez. A Terraform az egyes API-k hitelesítését szolgáltatói hitelesítő adatok alapján végzi – ilyen például az Azure CLI, a szolgáltatásnév vagy az Azure-erőforrások felügyelt identitásai. Emellett több szolgáltatói hitelesítő adat is használható egyetlen konfigurációban.
Azure-integrációk
Figyelembe kell vennie az Olyan Azure-funkciók használatát is, mint az Azure Policy , és hogy ezek hogyan működnek együtt más eszközökkel és nyelvekkel. A Bicep előzetes ellenőrzése meghatározza, hogy egy erőforrás nem felel-e meg egy szabályzatnak, így az üzembe helyezés előtt meghiúsul. Így a fejlesztők a megadott ARM-sablonok használatával szervizelhetik a szabályzattal rendelkező erőforrásokat. Az ARM-sablon használatával szabályzat-hozzárendelést hozhat létre egy másik erőforráshoz automatizált szervizelés céljából. A Terraform azonban meghiúsul, ha olyan erőforrást helyez üzembe, amely a szabályzat miatt nem engedélyezett.
Portálintegráció
A Bicep egyik fő előnye a Terraformnál a portálműveletek automatizálásának képessége. A Bicep használatával az Azure Portal használatával exportálhat sablonokat. A sablon exportálásával megismerheti az erőforrásokat üzembe helyező szintaxist és tulajdonságokat. A jövőbeli üzembe helyezéseket automatizálhatja az exportált sablonnal kezdve, és az igényeinek megfelelően módosíthatja. Amíg a Terraform-sablonok nem támogatottak, manuálisan kell lefordítania az exportált sablont.
Bár a Terraform nem biztosítja ugyanazokat a portálintegrációkat, mint a Bicep, a meglévő Azure-infrastruktúra a Terraform felügyelete alatt vehető igénybe az Azure Export for Terraform használatával. (Az Azure Export for Terraform egy nyílt forráskódú eszköz, amelyet a Microsoft aAzure/aztfexport GitHub-adattár.)
Sávon kívüli módosítások
Sávon kívüli konfigurációs módosítások az eszköz konfigurációjának az eszköz környezetén kívüli módosításai. Tegyük fel például, hogy üzembe helyez egy virtuálisgép-méretezési csoportot a Bicep vagy a Terraform használatával. Ha a virtuálisgép-méretezési csoportot a portál használatával módosítja, a módosítás "sávon kívüli" lesz, és ismeretlen az IaC-eszköz számára.
Ha Bicep-et használ, a sávon kívüli módosításokat össze kell egyeztetni a Bicepvel és az ARM-sablon kódjával, hogy a módosítások ne legyenek felülírva a következő üzembe helyezéskor. Ezek a módosítások nem tiltják le az üzembe helyezést.
Ha Terraformot használ, importálnia kell a sávon kívüli módosításokat a Terraform állapotába, és frissítenie kell a HCL-t.
Így ha egy környezet gyakran jár sávon kívüli módosításokkal, a Bicep felhasználóbarátabb. A Terraform használatakor minimálisra kell csökkenteni a sávon kívüli módosításokat.
Felhőbeli keretrendszerek
A felhőadaptálási keretrendszer (CAF) dokumentációk, ajánlott eljárások és eszközök gyűjteménye, amelyek segítségével felgyorsíthatja a felhőbevezetést a felhőbeli utazás során. Az Azure natív szolgáltatásokat biztosít a kezdőzónák üzembe helyezéséhez. A Bicep ezt a folyamatot arm-sablonokon és kezdőzóna-implementáción alapuló portáli felülettel egyszerűsíti. A Terraform egy nagyvállalati szintű kezdőzónák modult használ az Azure üzembe helyezéséhez, kezeléséhez és üzembe helyezéséhez.
Összesítés
A Bicep és a Terraform számos felhasználóbarát infrastruktúrát és integrációs funkciót kínál. Ezek a funkciók megkönnyítik az automatizálási technológia implementálását és kezelését. Amikor eldönti, hogy melyik a legjobb a környezet számára, fontos megfontolni, hogy egynél több felhőben helyezi-e üzembe, vagy hogy az infrastruktúra több- vagy hibridfelhős környezetből áll-e. Emellett mindenképpen vegye figyelembe a cikkben tárgyalt kilenc funkciót, hogy a legjobb döntést hozhassa a szervezet számára.
A mai szervezetek dinamikus kihívásokkal szembesülnek, amelyek nagy rugalmasságot és rugalmasságot igényelnek. A nyilvános felhőkörnyezetek automatizálással teljesítik ezeket az igényeket – különösen kódként (IaC) az infrastruktúrán keresztül. Két vezető IaC-lehetőség a Hashicorp Terraform és a Bicep. A Terraform egy nyílt forráskódú eszköz, amellyel a DevOps szakemberei deklaratív kóddal kezelhetik a helyszíni és a felhőszolgáltatásokat. A Microsoft Bicep deklaratív szintaxissal egyszerűsíti az Azure-erőforrások üzembe helyezését.
Ebben a cikkben a Terraform és a Bicep közötti hasonlóságok és különbségek azonosításához hasonlítjuk össze a felhasználói élmény legfontosabb funkcióit.
Nyelvszintaxis
A Bicep és a Terraform olyan tartományspecifikus nyelvek (DSL), amelyek könnyen használhatók, és időt takaríthatnak meg a fejlesztők számára. Mindkét eszköz hasonló kulcsszavakat és fogalmakat tartalmaz. Ezen fogalmak némelyike a paraméterezés, a többfájlos projektek támogatása és a külső modulok támogatása. A Terraform azonban a beépített funkciók gazdagabb tárát kínálja bizonyos feladatokhoz. A kettő közötti döntés a preferencia és a tapasztalat kérdése. Az alábbiakban rövid áttekintéseket és az egyes nyelvszintaxisok által kínált felhasználóbarát funkciókat tekintjük át.
A Bicep egy deklaratív nyelv. Így az elemek kódban való meghatározásának sorrendje nem befolyásolja az üzembe helyezés feldolgozását. A Bicep alapértelmezett céltartománya a resourceGroup
. A felhasználók változókat használhatnak összetett kifejezések beágyazásához, és olvashatóbbá tehetik a Bicep-fájlokat. A modulok koncepciója lehetővé teszi a Bicep-kód projektek vagy csapatok közötti újrafelhasználását.
A Terraform egy deklaratív nyelv is, amely a HashiCorp konfigurációs nyelvet (HCL) használja. A HCL elsődleges célja az erőforrások deklarálása. Más nyelvi funkciókkal kényelmesebbé teheti az erőforrások meghatározását. A Bicep-hez hasonlóan a Terraform konfigurációs fájljaiban lévő kód sorrendje nem jelentős.
Nyelvi segítők
A Bicep és a Terraform egyaránt nyelvi segítséget nyújt a kódolási feladatok egyszerűsítéséhez. Mivel mindkettő felhasználóbarát, a választás nagyban függ a beállításoktól és a követelményektől.
A Bicep olyan kifejezéseket támogat, amelyek dinamikusabbá és rugalmasabbá teszik a kódot. A Bicep-fájlokban különböző típusú függvények használhatók. Ezen függvénytípusok némelyike logikai, numerikus és kifogási függvény. A hurkok több másolatot is meghatározhatnak egy erőforrásról, modulról, tulajdonságról, változóról vagy kimenetről. A hurkok segítenek elkerülni a Bicep-fájlok szintaxisának ismétlését.
A Terraform beépített függvényeket is kínál, amelyeket a kifejezésekből hívunk meg az értékek átalakításához és kombinálásához. A Bicep-hez hasonlóan a Terraform-kifejezések is tartalmazhatnak összetett kifejezéseket, például az erőforrások által exportált adatokra mutató hivatkozásokat és a feltételes kiértékelést. A hurkok képesek kezelni a gyűjteményeket, és egy erőforrás több példányát is létrehozhatják anélkül, hogy meg kellene ismételni a kódot.
Modulok
A Bicep és a Terraform egyaránt támogatja a modulok fogalmát. A modulok lehetővé teszik, hogy újrahasználható összetevőket hozzon létre a kódból. A modulok kulcsszerepet játszanak az infrastruktúra skálázásában és a konfiguráció tisztán tartásában. Mivel a modulok erőforráscsoportokat foglalnak magukba, csökkentik a hasonló infrastruktúra-összetevőkhöz fejlesztendő kód mennyiségét. Bár a modulok hasonlóan működnek a Bicepben és a Terraformban, a megvalósításuk is eltérő.
A Bicep-ben a modul egyszerűen egy Bicep-fájl, amely egy másik Bicep-fájlból van üzembe helyezve. A Bicep-modulok a Bicep-fájlok olvashatóságának javítását szolgálják. Ezek a modulok méretezhetők is. A felhasználók modulokat oszthatnak meg a csapatok között a kódismétlések elkerülése és a hibák csökkentése érdekében. A Bicep-modulok definiálásáról további információt a Bicep-modulokban talál.
A Terraformban a modulok jelentik az erőforráskonfigurációk csapatok közötti csomagolásának és újrafelhasználásának elsődleges eszközeit. A Terraform-modulok több erőforrás tárolói, amelyek egyetlen logikai egységként vannak csomagolva. A modul egy könyvtárban együtt tárolt és/vagy .tf.json
tárolt fájlok gyűjteményéből .tf
áll. A helyi fájlrendszerből származó modulok mellett a Terraform különböző forrásokból is betölthet modulokat. Ezek a források közé tartozik a beállításjegyzék, a helyi elérési út, a modulok és a GitHub.
Üzembe helyezési életciklus
A Terraform és a Bicep egyaránt lehetővé teszi a fejlesztők számára, hogy az üzembe helyezés előtt ellenőrizzenek egy konfigurációt, majd alkalmazzák a módosításokat. A Terraform nagyobb rugalmasságot biztosít az adott konfiguráció által felügyelt összes távoli objektum elpusztításához. Ez a funkció akkor hasznos, ha a munka befejezése után törli az ideiglenes objektumokat. A legjobb megoldás kiválasztásakor fontos figyelembe venni a tipikus infrastruktúra-üzemelő példányok életciklus-követelményeit.
A Bicep egy lehetőségalapú műveletet kínál, amely lehetővé teszi a módosítások előzetes megtekintését a Bicep-fájlok üzembe helyezése előtt. Az Azure Resource Manager biztosítja a what-if
műveletet, és nem módosítja a meglévő erőforrásokat. Ezután használhatja az Azure PowerShellt vagy az Azure CLI-t a Bicep-fájlokkal az erőforrások Azure-ban való üzembe helyezéséhez. Az Azure PowerShell és az Azure CLI nem támogatja a távoli Bicep-fájlok üzembe helyezését. A Bicep CLI használatával azonban létrehozhatja a Bicep-fájlt egy JSON-sablonba, majd betöltheti a JSON-fájlt egy távoli helyre.
A Terraformban a Terraform plan parancs hasonló a Bicep what-if
művelethez. terraform plan
A paranccsal létrehoz egy előzetes verziójú végrehajtási tervet, mielőtt alkalmaznák. Ezután alkalmazza a végrehajtási tervet a terraform apply paranccsal. A Terraform szinte minden művelete magában foglalja a parancsok és terraform apply
a terraform plan
parancsok használatát is.
Első lépések
A Bicep és a Terraform egyaránt kínál erőforrásokat az első lépésekhez. A Bicep Learn modulja segít meghatározni az Azure-erőforrások konfigurálását. Emellett számos Azure-erőforrás üzembe helyezését is végigvezeti, hogy gyakorlati tapasztalatot nyújtson.
Hasonlóképpen, a HashiCorp Learn különböző Terraform-képzési erőforrásokat biztosít a felhasználóknak a Terraform telepítésének és használatának elsajátításához. Ezek az erőforrások olyan információkat tartalmaznak, amelyek bemutatják, hogyan használhatja a Terraformot infrastruktúra kiépítésére az Azure-ban.
Kódkészítés
A kódkészítési élmény a választott szerkesztőhöz elérhető bővítmények számától függ. Szerencsére a Bicep és a Terraform is kínál erőforrásokat a kódkészítés hatékonyságának javításához.
A Bicep esetében az egyik leghatékonyabb bővítmény a Bicep Visual Studio Code bővítmény. A bővítmény olyan funkciókat biztosít, mint a kódérvényesítés, az Intellisense, a ponttulajdonság-hozzáférés és a tulajdonság automatikus kiegészítése.
A Terraform esetében a Terraform Visual Studio Code bővítmény és a Terraform Language Server számos olyan funkciót kínál, mint a Bicep Visual Studio Code bővítmény. A bővítmény támogatja például a szintaxiskiemelést, az IntelliSense-t, a kódnavigációt és a modulkezelőt is. A HashiCorp [részletes telepítési utasításokat] is kínál a GitHub-adattárban (https://github.com/hashicorp/terraform-ls/blob/main/docs/USAGE.md) a Terraform Language Server konfigurálásához és használatához.
Azure-lefedettség
A Bicep előnyt élvez a Terraformpal szemben az Azure-erőforrások konfigurálásakor. A Bicep mélyen integrálva van az Azure-szolgáltatásokkal. Emellett azonnali támogatást nyújt az új Azure-funkciókhoz. A Terraform két szolgáltatót biztosít, amelyek lehetővé teszik a felhasználók számára az Azure felügyeletét: az AzureRM-et és az AzAPI-t. Az AzureRM-szolgáltató teljesen testre szabott élményt nyújt a stabil Azure-szolgáltatásokhoz. Néha egy kis késéssel járhat, ha ehhez a személyre szabott felülethez érünk. Az AzAPI-szolgáltató egy vékony réteg az Azure Resource Manager REST API-k tetején, amely - a Bicep-hez hasonlóan - azonnali támogatást biztosít az új Azure-funkciókhoz. A döntés előtt fontos figyelembe venni a szervezet infrastruktúra-követelményeit, és hogy azok teljes mértékben támogatottak-e.
Közösség és támogatás
A közösség kulcsszerepet játszik a tanulásban és a kihívások leküzdésében. A Terraform és a Bicep-közösségek egyaránt magas szintű elkötelezettséget és támogatást nyújtanak.
A Bicep-támogatás esetében, ha segítségre van szüksége, a probléma jellegétől függ:
- Dokumentációs hibák: A Microsoft Learn Bicep-dokumentációjával kapcsolatos problémák esetén minden cikk rendelkezik visszajelzési szakaszsal.
- Bicep-forráskód és hibák bejelentése: Látogasson el a Microsoft Bicep GitHub adattárba , és járuljon hozzá a nyílt forráskódú Bicep-termékhez és fájlhibákhoz.
A Terraform-támogatás esetében a probléma jellegétől függ, hogy hová megy segítségért:
Dokumentációs hibák: A Microsoft Learn Terraform-dokumentációjával kapcsolatos problémák esetén minden cikk rendelkezik visszajelzési szakaszsal.
Szolgáltatói forráskód és hibabejelentési hibák: A Microsoft gitHub-adattárakat használ, ahol fájlba helyezheti a hibákat, és hozzájárulhat a nyílt forráskódú Terraform Azure-szolgáltatókhoz. Az elérhető szolgáltatók listájához keresse meg az Azure GitHub-szervezetet, és írja be terraform-provider-
az Adattár keresése... mezőt.
Terraform alapvető kérdések: Látogasson el a HashiCorp közösségi portál Terraform szakaszára.
Terraform szolgáltatóval kapcsolatos kérdések: Látogasson el a HashiCorp közösségi portál Terraform-szolgáltatók szakaszára.
Összesítés
A Bicep és a Terraform két vezető IaC-lehetőség, amelyek megkönnyítik az Azure-erőforrások konfigurálását és üzembe helyezését. Mindkettő felhasználóbarát funkciókat kínál, amelyek segítenek a szervezeteknek a hatékonyság és a hatékonyság növelésében. A szervezet számára legjobban megfelelő felmérés során gondosan vegye figyelembe az infrastruktúra követelményeit és beállításait.