Az IaC-eszközök megértése: Cloudformation vs Terraform

AWS CloudFormation és Terraform – nem tudja, melyiket válassza? Ez a cikk segít egy okos döntés meghozatalában.

A felhőalapú számítástechnika forradalmasította a DevOps világát. Ez már nem csak divatszó; itt van és itt van, hogy megváltoztassa alkalmazásaink fejlesztésének és karbantartásának módját. Noha számtalan oka van annak, hogy miért érdemes a felhőalapú számítástechnikát minden méretű vállalkozáshoz használnia, van egy kis korlátozás, az infrastruktúrát manuálisan kell kiépíteni.

Fel kell lépnie a felhőszolgáltatók konzoljaira, és pontosan meg kell mondania nekik, mit szeretne. Ez jól működik kis felhasználási esetekben, de mi van akkor, ha különböző emberek módosítják a konfigurációt a konzolon. A végén egy szuperbonyolult infrastruktúrához juthat, amelyet egyre nehezebb lesz fenntartani. Nincs hatékony módja az együttműködésnek vagy az infrastruktúra változásainak nyomon követésének a felhőben. Nos, valójában van. Az infrastruktúra mint kód.

Az infrastruktúra mint kód nagyon népszerű kifejezés a számítási felhőben. Ez az informatikai infrastruktúra kód használatával történő kezelésének folyamata. Igen ez igaz. Ahelyett, hogy a konzolra menne, és mindent kézzel csinálna; Az infrastruktúra kódként, más néven IAAC vagy IAC, lehetővé teszi konfigurációs fájlok írását, amelyek azután biztosítják a felhő infrastruktúráját. Az IAC olyan előnyöket biztosít számunkra, mint a következetesség, az egyszerű és gyors karbantartás, és nincs lehetőség az emberi hibákra.

IAC használata az Amazon Web Services szolgáltatással

Az AWS a világ vezető felhőalapú számítástechnikai szolgáltatása, dupla piaci részesedéssel, mint az utána következő felhőszolgáltató. Az AWS-en több mint 200 szolgáltatás található, amelyek több száz és több ezer használati esetet képesek kielégíteni.

Amikor elkezdi használni az IAC-t az AWS-szel, gyakran leszűkíti a választási lehetőségeket a AWS CloudFormation és a nyílt forráskódú eszköz, Terraform. Amikor a kettő közül próbál választani, a két eszköz által kínált funkciók sokaságának megértése meglehetősen elsöprő lehet. Ebben a cikkben áttekintjük az AWS CloudFormation és a Terraform közötti különbségeket, hogy segítsen eldönteni, melyik eszköz felel meg jobban az Ön igényeinek.

Terraform vs. AWS CloudFormation: különbségek

Modularitás

Ha nagy szervezetekben használjuk az IAC-t, a modularitás fontos tényező lehet a megfelelő eszköz kiválasztásában.

  Mi a különbség a digitális és az optikai zoom között?

CloudFormation

A CloudFormation nem támogatja a modulokat. Lehetővé teszi az úgynevezett beágyazott veremek modulok használatát.

Például rendelkezhet egy szabványos konfigurációval arra vonatkozóan, hogyan kíván kiépíteni egy S3-csoportot a szervezetben. Tehát létrehoz egy szabványos CloudFormation-sablont, amely létrehozza az S3-csoportokat. Mostantól, amikor egy végfelhasználó létrehozni szeretné az S3 tárolót, használhatja ezt a CloudFormation sablont beágyazott veremként, és létrehozhat egy szabványos S3 tárolót.

Az AWS-nek van egy kevésbé ismert szolgáltatása is, a AWS szolgáltatáskatalógus amelyek segíthetnek az AWS CloudFormation modularitásában. A szolgáltatáskatalógus egy AWS-szolgáltatás, amelyet kifejezetten azoknak a szervezeteknek terveztek, amelyek korlátozni szeretnék az AWS-szolgáltatások hatókörét a megfelelőségi, biztonsági, költség- vagy teljesítménykövetelmények teljesítése érdekében. És képzeld csak? Az AWS-szolgáltatáskatalógus CloudFormation-sablonokat használ a háttérben.

Gyorsan értsük meg ezt egy példán keresztül. Ha nem megfelelően használják, az S3 vödrök hamarosan katasztrofálisak lehetnek a bizalmas adatok számára. Vegyük ugyanezt a példát: szabványos módot szeretne kapni az S3 használatára a szervezetben. Az első lehetőség a beágyazott verem sablon létrehozása, amely más CloudFormation veremekben is használható, és ugyanolyan jó.

Ha nem szeretné, hogy a felhasználók ezt a szabványos sablont beágyazott veremként használják, használhatja az AWS szolgáltatáskatalógust. A szolgáltatáskatalógus lehetővé teszi a felhasználók számára, hogy ezt a szabványos sablont a konzol felhasználói felületéről használják, és megadjanak néhány paramétert, némi testreszabás érdekében. Ez lehetővé teszi az infrastruktúra kiépítésének szabályozását az AWS-fiókokban, és megakadályozza a nem kívánt forgatókönyveket.

Terraform

A Terraform natív modultámogatással rendelkezik. Lehetővé teszi az AWS CloudFormationhez hasonlóan szabványos konfigurációk létrehozását, és más terraform konfigurációkban való használatát.

Mivel a Terraform egy nyílt forráskódú eszköz, néhány előre elkészített nyílt forráskódú modult is találhat és használhat a Terraform Registry-ben. Saját modulokat is létrehozhat saját konfigurációkkal, és tárolhatja azokat egy privát modul-nyilvántartásban.

Személy szerint szívesebben használnám a Terraformot a CloudFormation helyett, ha a modularitás nagy követelmény lenne.

Egy beágyazott verem használata a CloudFormationben nem olyan egyszerű, mint a modulok használata a Terraformban. A fő tényező az, hogy az adatok átadása a CFN-sablonból a beágyazott verembe meglehetősen bonyolult lehet.

Nincs szabványos hely, ahol a CloudFormation-sablonok megoszthatók. Rendelkezik az AWS szolgáltatáskatalógussal, de ez csak egy módja annak, hogy érvényesítsen néhány szabályt az infrastruktúra konzolon keresztüli létrehozására vonatkozóan. Mindannyian a kódról szólunk. A szolgáltatáskatalógus használatakor, bár néhány bonyolult feladatot a CloudFormation-fájlok foglalnak magukba, továbbra is végig kell mennie a konzol kézi feladatán, és meg kell adnia a paramétereket az infrastruktúra létrehozásához.

  Ubuntu: USB-eszközök listája

Ezzel szemben a Terraform rendelkezik egy meghatározott módszerrel a modulok létrehozására, karbantartására és megosztására. A Terraform Module Registry-ben megtekintheti a modulok pontos követelményeit, és nagyon egyszerűen használhatja őket terraform fájljaiban.

Az infrastruktúra ellenőrzése és irányítása

Ha korlátozni szeretné, hogy az emberei milyen erőforrásokat hozhatnak létre az AWS-fiókokban: Az AWS CloudFormation és a Terraform is lehetőséget biztosít erre.

Először beszéljünk a CloudFormationről. A CloudFormation önmagában nem kínál semmilyen szabályozást a sablonok használatára vonatkozóan, de használhatja az AWS IAM-házirendeket, hogy csak az AWS-fiókjában lévő felhasználók számára engedélyezze, hogy csak a szabványos CloudFormation-sablonokat használják az erőforrások létrehozásához. Az S3 gyűjtőcsoportra vonatkozó példánkban előfordulhat, hogy korlátozni szeretné a felhasználók összes „S3 Create” engedélyét, és csak az AWS szolgáltatáskatalógusból vagy a beágyazott veremekből hozhatnak létre S3 gyűjtőcsoportokat.

A Terraform lehetővé teszi annak szabályozását, hogy a felhasználók mely erőforrásokat hozhatnak létre egy szabályzat kódeszközként történő használatával Őrszem. A Sentinel lehetővé teszi a finomszemcsés, logikai alapú házirendek érvényesítését a felhasználói műveletek Terraformon keresztüli engedélyezéséhez vagy megtagadásához. Például megtagadhat minden olyan erőforrást, amely S3-csoportokat hoz létre, és csak szabványos modulból engedélyezheti a felhasználók számára az S3-csoportok létrehozását.

Államirányítás

Mind az AWS CloudFormationnek, mind a Terraformnak nyomon kell követnie az általuk karbantartott erőforrásokat.

A Terraform az infrastruktúra állapotát állapotfájlban tárolja. Ezt a fájlt alapértelmezés szerint helyileg tárolja, de tárolhatja távoli háttérrendszereken, például az S3-on, és több felhasználó is módosíthatja ugyanazt az infrastruktúra-készletet.

A CloudFormation nem tart fenn állapotfájlt, legalábbis olyat, amelyet láthatunk. A CloudFormation egy felügyelt szolgáltatás, így minden állapot karbantartást és ellenőrzést végez a háttérben.

Mind az AWS CloudFormation, mind a Terraform eszközzel ellenőrizheti, milyen változtatásokat hajtanak végre az infrastruktúrán. A Terraformban futtathat egy parancsot – „terraform plan” és hogyan tervezi a Terraform alkalmazni a konfigurációs változtatásokat. A CloudFormation szolgáltatásban a felhasználók ezt az információt a Módosítási készletek segítségével láthatják.

Nyelv

A Terraform a HashiCorp konfigurációs nyelvét, a HCL-t használja, a HashiCorp által létrehozott nyelvet. Nagyon hasonlít a JSON-hoz további beépített funkciókkal és képességekkel.

A CloudFormation sablonokat YAML vagy JSON formátumban írják

Naplózás és visszaállítások

Mind az AWS CloudFormation, mind a Terraform jó naplózási képességekkel rendelkezik. Tapasztalataim szerint a hibák és problémák egyértelműek (a legtöbb esetben).

  Miért ne használjon MicroSD kártyát DSLR vagy tükör nélküli fényképezőgépekben?

CloudFormation: Sikertelen veremmódosítás esetén a CloudFormation alapértelmezés szerint visszaállítja az összes módosítást. Ez egy jó funkció, és bármilyen hibakeresési célból letiltható.

Terraform: A Terraform nem vonja vissza automatikusan a változtatásokat, ha sikertelen. Ez nem probléma, mivel mindig futtathatja a terraform rombolás parancsot a félig kiépített konfiguráció törléséhez és a Terraform futtatásának újraindításához.

Hatály

A Terraform nem korlátozódik az AWS Cloudra. A Terraform és a CloudFormation közötti választás során a legfontosabb tényező az, hogy a Terraform más felhőszolgáltatókat és szolgáltatásokat is támogat.

Tehát ha több felhőplatformhoz kívánja használni az IAC-t, a Terraform a legjobb választás. A CloudFormation, bár hatékony eszköz, csak az AWS-re korlátozódik. A Terraform használatával infrastruktúrát állíthat be, és alkalmazását több felhőplatformon is telepítheti, ezáltal elérhetőbbé és robusztusabbá teheti az alkalmazást.

Funkció támogatás

Általában az AWS új szolgáltatások és funkciók bevezetésekor a CloudFormation a Terraform előtt frissül, mivel ez egy AWS-szolgáltatás. Jelenleg mindkét eszköz lefedi e szolgáltatások legtöbb szolgáltatását és funkcióját. Ez egy kis hátránya lehet a Terraform használatának, de van megoldásunk.

Lehetőség van CloudFormation verem létrehozására is a Terraform kódon belül. Tehát, ha használja a Terraformot, és nem rendelkezik funkcióval, ideiglenesen beállíthat egy CloudFormation veremet a Terraform kódon belül.

Műszaki támogatás

A fizetett AWS technikai támogatási terv a CloudFormation támogatást is magában foglalja.

A HashiCorp a Terraformon is fizetett technikai támogatást.

Következtetés

Az AWS CloudFormation és a Terraform is hatékony és teljesen kifejlesztett eszközök. A fenti különbségek segítenek abban, hogy megalapozott döntést hozzon az eszköz kiválasztásához az Ön igényei alapján. Személyes javaslatként, ha több felhőplatformot szeretne használni a jövőben, vagy jelenleg több felhőt használ, használja a Terraformot egyablakos ügyintézésként minden igényének kielégítésére. Ha csak az AWS-hez keres IAC-eszközt, az AWS CloudFormation és a Terraform is tisztességes játék.

Ha érdekli a Terraform tanulása, nézze meg ezeket az online tanfolyamokat.