Porozumění nástrojům IaC: Cloudformation vs Terraform

AWS CloudFormation a Terraform – nejste si jisti, který vybrat? Tento článek vám pomůže učinit chytré rozhodnutí.

Cloud Computing způsobil revoluci ve světě DevOps. Už to není jen módní slovo; je tady a je tady, aby změnil způsob, jakým vyvíjíme a udržujeme naše aplikace. I když existuje bezpočet důvodů, proč byste měli cloud computing používat pro všechny velikosti podniků, existuje zde mírné omezení, infrastrukturu musíte zřídit ručně.

Musíte jít do konzolí svých poskytovatelů cloudu a říct jim, co přesně chcete. To funguje dobře pro malé případy použití, ale co když máte různé osoby, které provádějí změny konfigurace v konzole. Mohli byste skončit se super komplikovanou infrastrukturou, jejíž údržba bude stále těžší. Neexistuje žádný účinný způsob, jak spolupracovat nebo sledovat změny infrastruktury v cloudu. No, vlastně existuje. Infrastruktura jako kodex.

Infrastruktura jako kód je v cloud computingu velmi oblíbený pojem. Je to proces správy vaší IT infrastruktury pomocí kódu. Ano, to je správně. Místo toho, abyste šli do konzole a dělali vše ručně; Infrastruktura jako kód, neboli IAAC nebo IAC, vám umožňuje psát konfigurační soubory, které pak poskytují vaši cloudovou infrastrukturu. IAC nám poskytuje výhody, jako je konzistence, snadná a rychlá údržba a žádný prostor pro lidské chyby.

Použití IAC s webovými službami Amazon

AWS je přední cloudová výpočetní služba na světě, která má dvojnásobný podíl na trhu než následující poskytovatel cloudu. Na AWS existuje více než 200 služeb, které mohou uspokojit stovky a tisíce případů použití.

Když začnete používat IAC s AWS, často zúžíte svůj výběr na AWS CloudFormation a open-source nástroj, Terraform. Když se pokoušíte vybrat si mezi těmito dvěma, pochopení množství funkcí, které oba nástroje nabízejí, může být docela ohromující. V tomto článku se podíváme na rozdíly mezi AWS CloudFormation a Terraform, abychom vám pomohli rozhodnout, který nástroj lépe vyhovuje vašim potřebám.

  Jak skrýt obsah oznámení na uzamčeném iPhonu, jako je iPhone X

Terraform vs. AWS CloudFormation: Rozdíly

Modularita

Při použití IAC ve velkých organizacích může být modularita velkým faktorem pro výběr správného nástroje.

CloudFormation

CloudFormation nemá nativní podporu pro moduly. Umožňuje vám jako moduly používat něco, čemu se říká vnořené zásobníky.

Můžete mít například standardní konfiguraci toho, jak chcete ve vaší organizaci poskytovat segment S3. Takže vytvoříte standardní šablonu CloudFormation, která vytvoří segmenty S3. Nyní, když chce koncový uživatel vytvořit segment S3, může použít tuto šablonu CloudFormation jako vnořený zásobník a vytvořit standardní segment S3.

Existuje také méně známá služba AWS, the Katalog služeb AWS které vám mohou pomoci s modularitou vašeho AWS CloudFormation. Katalog služeb je služba AWS, která je navržena speciálně pro organizace, které chtějí omezit rozsah služeb AWS, aby splnily požadavky na shodu, zabezpečení, náklady nebo výkon. A Hádej co? Katalog služeb AWS používá v backendu šablony CloudFormation.

Pojďme to rychle pochopit na příkladu. Kbelíky S3, pokud nejsou správně používány, mohou mít brzy katastrofu pro vaše důvěrná data. Vezměme si stejný příklad, chcete mít standardní způsob, jak chcete používat S3 ve vaší organizaci. První možností je vytvořit šablonu vnořeného zásobníku, kterou lze použít v rámci jiných zásobníků CloudFormation a je stejně dobrá.

Pokud nechcete, aby uživatelé museli používat tuto standardní šablonu jako vnořený zásobník, můžete použít Katalog služeb AWS. Katalog služeb umožní uživatelům používat tuto standardní šablonu z uživatelského rozhraní konzoly a specifikovat některé parametry pro drobné úpravy. To vám umožní kontrolovat, jak je infrastruktura zajišťována ve vašich účtech AWS, a zabránit jakýmkoli nežádoucím scénářům.

Terraform

Terraform má nativní podporu pro moduly. Umožňuje vám vytvářet standardní konfigurace podobné AWS CloudFormation a používat je v jiných terraformních konfiguracích.

Vzhledem k tomu, že Terraform je nástroj s otevřeným zdrojovým kódem, můžete také najít a používat některé předem připravené moduly s otevřeným zdrojovým kódem v registru Terraform. Můžete také vytvořit své vlastní moduly s vlastními konfiguracemi a hostit je v soukromém registru modulů.

Osobně bych raději používal Terraform před CloudFormation, pokud by modularita byla velkým požadavkem.

Použití vnořeného zásobníku v CloudFormation není tak snadné jako použití modulů v Terraformu. Hlavním faktorem je, že předávání dat ze šablony CFN do vnořeného zásobníku může být poměrně komplikované.

  Jak zjistit sériové číslo a IMEI pro vaše Apple Watch

Neexistuje žádné standardní místo, kde lze šablony CloudFormation sdílet. Máte katalog služeb AWS, ale to je jen způsob, jak prosadit některá pravidla pro vytváření infrastruktury prostřednictvím konzoly. Všem nám jde o kód. Při používání katalogu služeb, přestože jsou některé komplikované úlohy zapouzdřeny soubory CloudFormation, stále musíte projít ruční úlohou přejít do konzole a zadat parametry, abyste vytvořili svou infrastrukturu.

Terraform má naopak nastavenou metodu vytváření, údržby a sdílení modulů. Přesné požadavky modulů můžete vidět v registru modulů Terraform a velmi snadno je použít ve svých souborech terraform.

Kontrola a správa nad infrastrukturou

Pokud chcete omezit, jaké zdroje mohou vaši lidé vytvářet na vašich účtech AWS: AWS CloudFormation i Terraform vám k tomu poskytují prostředky.

Nejprve si promluvme o CloudFormation. CloudFormation sám o sobě nenabízí žádnou kontrolu nad tím, jak se šablony používají, ale můžete použít zásady AWS IAM, abyste uživatelům ve vašem účtu AWS umožnili používat pouze standardní šablony CloudFormation pro vytváření prostředků. V našem příkladu segmentu S3 možná budete chtít omezit všechna oprávnění „Vytvoření S3“ pro uživatele a umožnit jim vytvářet segmenty S3 pouze z katalogu služeb AWS nebo Nested Stacks.

Terraform vám umožňuje řídit, které zdroje mohou vaši uživatelé vytvářet pomocí zásady jako nástroje kódu Stráž. Sentinel vám umožňuje vynucovat jemné, na logice založené zásady, které povolují nebo zakazují akce uživatele prostřednictvím Terraformu. Můžete například odepřít všechny prostředky, které vytvářejí segmenty S3, a umožnit uživatelům vytvářet segmenty S3 pouze ze standardního modulu.

Řízení státu

AWS CloudFormation i Terraform musí sledovat zdroje, které udržují.

Terraform ukládá stav vaší infrastruktury do stavového souboru. Tento soubor je ve výchozím nastavení uložen lokálně, ale můžete jej uložit na vzdálených backendech, jako je S3 a nechat více uživatelů provádět změny ve stejné sadě infrastruktury.

CloudFormation neudržuje soubor stavu, alespoň ne ten, který můžeme vidět. CloudFormation je spravovaná služba, takže veškerou údržbu a kontroly stavu provádí na pozadí.

AWS CloudFormation i Terraform mají způsob, jak zkontrolovat, jaké změny budou provedeny ve vaší infrastruktuře. V Terraformu můžete spustit příkaz – „terraform plan“ a jak Terraform plánuje použít vaše konfigurační změny. V CloudFormation mohou uživatelé vidět tyto informace prostřednictvím Change Sets.

  Jak změnit e-mailovou adresu Yahoo

Jazyk

Terraform používá konfigurační jazyk HashiCorp, HCL, jazyk vytvořený HashiCorp. Je velmi podobný JSON s dalšími vestavěnými funkcemi a schopnostmi.

Šablony CloudFormation jsou napsány ve formátech YAML nebo JSON

Protokolování a vrácení zpět

AWS CloudFormation i Terraform mají dobré možnosti protokolování. Podle mých zkušeností byly chyby a problémy jednoduché (z větší části).

CloudFormation: Ve výchozím nastavení CloudFormation vrátí zpět všechny vaše změny v případě neúspěšné změny zásobníku. To je dobrá funkce a lze ji zakázat pro jakékoli účely ladění.

Terraform: Terraform automaticky nevrátí zpět vaše změny v případě, že selže. To není problém, protože vždy můžete spustit příkaz terraform zničit, abyste odstranili napůl zajištěnou konfiguraci a znovu spustili běh Terraformu.

Rozsah

Terraform není omezen na AWS Cloud. Nejdůležitějším faktorem při výběru mezi Terraformem a CloudFormation je, že Terraform podporuje další cloudové poskytovatele a služby.

Pokud tedy plánujete používat IAC pro více cloudových platforem, Terraform je vaše nejlepší volba. CloudFormation, i když je to výkonný nástroj, je omezen pouze na AWS. Pomocí Terraform můžete nastavit infrastrukturu a nasadit svou aplikaci na více cloudových platformách, čímž se vaše aplikace stane dostupnější a robustnější.

Podpora funkcí

Obvykle, když AWS zavádí nové služby a funkce, bude CloudFormation aktualizován před Terraformem, protože se jedná o službu AWS. V současné době oba nástroje pokrývají většinu služeb a funkcí těchto služeb. To může být mírná nevýhoda používání Terraformu, ale máme řešení.

Existuje také možnost vytvořit zásobník CloudFormation v rámci kódu Terraform. Pokud tedy používáte Terraform a nemá funkci, můžete dočasně nastavit zásobník CloudFormation uvnitř kódu Terraform.

Technická podpora

Placený plán technické podpory AWS zahrnuje také podporu CloudFormation.

HashiCorp také zaplatil plány technické podpory na Terraformu.

Závěr

AWS CloudFormation i Terraform jsou výkonné a plně vyvinuté nástroje. Výše uvedené rozdíly vám pomohou učinit informované rozhodnutí při výběru nástroje na základě vašich požadavků. Jako osobní návrh, pokud plánujete v budoucnu používat více cloudových platforem nebo v současné době používáte více cloudů, měli byste Terraform používat jako jednotné kontaktní místo pro všechny vaše potřeby. Pokud hledáte nástroj IAC pouze pro AWS, AWS CloudFormation i Terraform jsou férová hra.

Pokud se chcete naučit Terraform, podívejte se na tyto online kurzy.