Aby bylo možné dosáhnout škálování, týmy DevOps vždy hledají způsoby rychlého nasazení kódu s důvěryhodným a opakovatelným procesem. Pokud jde o cloud a infrastrukturu, tento proces se stále častěji dosahuje pomocí infrastruktury jako kódu (IaC). Nástroje IaC jsou různé od nástrojů pro obecné účely až po nástroje určené pro konkrétní prostředí. Terraform je příkladem bývalého nástroje, zatímco Bicep je navržený tak, aby zpracovával úlohy související s Azure.
V tomto článku porovnáváme devět funkcí infrastruktury a integrace Bicep a Terraformu. Pochopení těchto rozdílů vám pomůže rozhodnout se, který nástroj nejlépe podporuje vaši infrastrukturu a procesy.
Stav a back-end
Terraform i Bicep jsou konfigurace požadovaného stavu (DSC), která usnadňuje správu IT a vývojové infrastruktury jako kódu. Terraform ukládá stav o spravované infrastruktuře a konfiguraci. Terraform pomocí těchto informací mapuje skutečné prostředky na vaši konfiguraci, sleduje metadata a zlepšuje výkon větších infrastruktur. Stav je uložen v místním souboru s názvem terraform.tfstate
, ale může být uložen také vzdáleně. Je důležité zálohovat a zabezpečit soubory stavu. Stejně jako Terraform je Bicep deklarativní a hledání cílů. Bicep ale neukládá stav. Místo toho bicep spoléhá na přírůstkové nasazení.
Cíle infrastruktury
Při porovnávání Bicep s Terraformem pro správu cloudové infrastruktury je důležité zvážit vaše cílové cloudové prostředí:
- Pouze Azure
- Více cloudů nebo hybridních cloudů
Bicep je specifický pro Azure a není navržený tak, aby fungoval s jinými cloudovými službami.
Pokud vaším cílem je automatizovat nasazení do některého z následujících prostředí, terraform je pravděpodobně lepší volbou:
- Virtualizační prostředí
- Scénáře s více cloudy – například Azure a další cloudy
- Místní úlohy
Terraform komunikuje s jinými poskytovateli cloudu nebo rozhraními API pomocí modulů plug-in označovaných jako poskytovatelé. Existuje několik poskytovatelů Azure Terraformu, kteří umožňují správu infrastruktury Azure. Při kódování konfigurace Terraformu zadáte požadované zprostředkovatele, které používáte. Když spustíte inicializaci terraformu, nainstaluje se zadaný zprostředkovatel a bude ho možné použít z vašeho kódu.
Nástroje rozhraní příkazového řádku (CLI) hrají klíčovou roli při orchestraci prostřednictvím implementace a správy automatizačních technologií. Bicep i Terraform nabízejí nástroje rozhraní příkazového řádku.
Bicep se integruje s Azure CLI, což vývojářům umožňuje používat az
příkazy, jako jsou:
az bicep
: Příkazy az bicep umožňují provádět takové úlohy, jako je instalace Bicep a vytváření a publikování souborů Bicep.
az deployment
: Článek Nasazení prostředků pomocí Bicep a Azure CLI vysvětluje, jak používat Azure CLI se soubory Bicep k nasazení prostředků do Azure.
Rozhraní příkazového řádku Terraformu umožňuje provádět takové úlohy, jako je ověření a formátování kódu Terraformu, a vytvoření a použití plánu provádění.
Bicep také poskytuje funkci, která usnadňuje integraci Bicep se službou Azure Pipelines. Pro Terraform je dostupná podobná funkce, ale musíte si stáhnout a nainstalovat rozšíření Azure Pipelines Terraform Tasks pro Visual Studio. Po instalaci můžete z Azure Pipelines spustit příkazy Rozhraní příkazového řádku Terraformu. Kromě toho Terraform i Bicep podporují GitHub Actions k automatizaci softwarových sestavení, testů a nasazení.
zpracovává se
Existují některé důležité rozdíly mezi Bicep a Terraformem z hlediska efektivity a optimalizace nasazení. Při bicep probíhá zpracování na straně základní služby infrastruktury Azure. Tato funkce nabízí výhody, jako je předběžné zpracování pro kontrolu zásad nebo dostupnost nasazení více instancí v rámci oblasti. Pomocí Terraformu se zpracování provádí v rámci klienta Terraformu. Předběžné zpracování proto nezahrnuje žádná volání do Azure, protože používá stav a HCL (HashiCorp Language) k určení požadovaných změn.
Ověřování
Funkce ověřování Azure se liší mezi Bicepem a Terraformem. S Bicep se během požadavku na odeslání souboru Bicep a šablony ARM zadává autorizační token. ARM zajišťuje, že máte oprávnění k vytvoření nasazení i nasazení prostředků v rámci zadané šablony. Terraform ověřuje každé rozhraní API na základě přihlašovacích údajů zprostředkovatele, jako jsou Azure CLI, instanční objekt nebo spravované identity pro prostředky Azure. Kromě toho lze v jedné konfiguraci využít více přihlašovacích údajů zprostředkovatele.
Integrace Azure
Měli byste také zvážit použití funkcí Azure, jako je Azure Policy , a způsob interakce s jinými nástroji a jazyky. Předběžné ověření Bicep určuje, jestli prostředek nevyhovuje zásadám, aby selhal před nasazením. Vývojáři tak můžou opravovat prostředky pomocí zásad pomocí poskytnutých šablon ARM. Šablonu ARM můžete použít k vytvoření přiřazení zásady k jinému prostředku pro účely automatizované nápravy. Terraform ale selže, když je prostředek nasazený, který je kvůli zásadám zakázaný.
Integrace portálu
Jednou z hlavních výhod, které Má Bicep oproti Terraformu, je možnost automatizovat akce portálu. Pomocí Bicep můžete pomocí webu Azure Portal exportovat šablony. Export šablony vám pomůže pochopit syntaxi a vlastnosti, které nasazují vaše prostředky. Budoucí nasazení můžete automatizovat tak, že začnete s exportovanou šablonou a upravíte je tak, aby vyhovovala vašim potřebám. Dokud nebudou podporované šablony Terraformu, musíte exportovanou šablonu přeložit ručně.
I když Terraform neposkytuje stejné integrace portálu jako Bicep, stávající infrastrukturu Azure je možné provést ve správě Terraformu pomocí Azure Exportu pro Terraform. (Azure Export for Terraform je opensourcový nástroj vlastněný a spravovaný Microsoftem na webu Úložiště Azure/aztfexport GitHub.)
Vzdálené změny
Změny vzdálené konfigurace jsou změny provedené v konfiguraci zařízení mimo kontext nástroje. Řekněme například, že nasadíte škálovací sadu virtuálních počítačů pomocí Bicep nebo Terraformu. Pokud tuto škálovací sadu virtuálních počítačů změníte pomocí portálu, změna bude pro váš nástroj IaC "mimo pásmo" a neznámá.
Pokud používáte Bicep, měly by se změny mimo pásmo odsouhlasit s Bicepem a kódem šablony ARM, aby se tyto změny při příštím nasazení nepřepsaly. Tyto změny neblokují nasazení.
Pokud používáte Terraform, musíte importovat změny mimo pásmo do stavu Terraformu a aktualizovat seznam HCL.
Proto pokud prostředí zahrnuje časté vzdálené změny, bicep je uživatelsky přívětivější. Při použití Terraformu byste měli minimalizovat změny mimo pásmo.
Cloudové architektury
Architektura přechodu na cloud (CAF) je kolekce dokumentace, osvědčených postupů a nástrojů pro zrychlení přechodu na cloud během vaší cesty ke cloudu. Azure poskytuje nativní služby pro nasazení cílových zón. Bicep tento proces zjednodušuje s portálovým prostředím založeným na šablonách ARM a implementaci cílové zóny. Terraform využívá modul cílových zón na podnikové úrovni k nasazení, správě a zprovoznění pomocí Azure.
Shrnutí
Bicep a Terraform nabízejí mnoho uživatelsky přívětivých funkcí infrastruktury a integrace. Tyto funkce usnadňují implementaci a správu automatizačních technologií. Při rozhodování, která je pro vaše prostředí nejvhodnější, je důležité zvážit, jestli nasazujete do více než jednoho cloudu nebo jestli se vaše infrastruktura skládá z více nebo hybridního cloudového prostředí. Kromě toho nezapomeňte vzít v úvahu devět funkcí probíraných v tomto článku, aby byla pro vaši organizaci nejlepší volbou.
Dnešní organizace čelí dynamickým výzvám, které vyžadují velkou flexibilitu a flexibilitu. Prostředí veřejného cloudu splňují tyto potřeby prostřednictvím automatizace – zejména prostřednictvím infrastruktury jako kódu (IaC). Dvě úvodní možnosti IaC jsou Hashicorp Terraform a Bicep. Terraform je opensourcový nástroj, který pomáhá odborníkům v DevOps spravovat místní a cloudové služby pomocí deklarativního kódu. Microsoft Bicep využívá deklarativní syntaxi ke zjednodušení nasazení prostředků Azure.
V tomto článku porovnáváme několik klíčových funkcí uživatelského prostředí, abychom identifikovali podobnosti a rozdíly mezi Terraformem a Bicepem.
Syntaxe jazyka
Bicep a Terraform jsou jazyky specifické pro doménu (DSL), které se snadno používají a šetří čas vývojáře. Oba nástroje obsahují podobná klíčová slova a koncepty. Některé z těchto konceptů jsou parametrizace, podpora projektů s více soubory a podpora externích modulů. Terraform ale nabízí bohatší knihovnu předdefinovaných funkcí pro určité úlohy. Rozhodování mezi těmito dvěma je otázkou preference a zkušeností. Tady jsou stručné přehledy a některé uživatelsky přívětivé funkce, které každá syntaxe jazyka nabízí.
Bicep je deklarativní jazyk. Pořadí, ve kterém jsou prvky definované v kódu, nemá vliv na způsob zpracování nasazení. Výchozí cílový obor bicep je resourceGroup
. Uživatelé můžou využívat proměnné k zapouzdření složitých výrazů a zajištění čitelnějších souborů Bicep. Koncept modulů umožňuje opakované použití kódu Bicep napříč projekty nebo týmy.
Terraform je také deklarativní jazyk, který používá jazyk HCL (HashiCorp Configuration Language). Primárním účelem seznamu HCL je deklarovat prostředky. Další jazykové funkce slouží k usnadnění definování prostředků. Stejně jako Bicep není řazení kódu v konfiguračních souborech Terraformu významné.
Pomocné rutiny jazyka
Bicep i Terraform poskytují pomocné rutiny jazyka ke zjednodušení programovacích úloh. Vzhledem k tomu, že obě jsou uživatelsky přívětivé, volba z velké části závisí na preferencích a požadavcích.
Bicep podporuje výrazy, aby byl váš kód dynamičtější a flexibilnější. Různé typy funkcí lze použít v souboru Bicep. Některé z těchto typů funkcí jsou logické, číselné a problematické funkce. Smyčky můžou definovat více kopií prostředku, modulu, vlastnosti, proměnné nebo výstupu. Smyčky pomáhají vyhnout se opakování syntaxe v souboru Bicep.
Terraform také nabízí integrované funkce, které se volají z výrazů k transformaci a kombinování hodnot. Podobně jako Bicep můžou výrazy Terraformu zahrnovat komplexní výrazy, jako jsou odkazy na data exportovaná prostředky a podmíněné vyhodnocení. Smyčky můžou zpracovávat kolekce a můžou vytvářet více instancí prostředku, aniž by bylo nutné opakovat kód.
Moduly
Bicep i Terraform podporují koncept modulů. Moduly umožňují vytvářet opakovaně použitelné komponenty z kódu. Moduly hrají klíčovou roli při škálování infrastruktury a udržování konfigurace v čistém stavu. Vzhledem k tomu, že moduly zapouzdřují skupiny prostředků, snižují množství kódu, který musí být vyvinut pro podobné komponenty infrastruktury. Zatímco moduly fungují podobně v Bicep a Terraformu, liší se v implementaci.
V Bicep je modul jednoduše soubor Bicep, který je nasazený z jiného souboru Bicep. Moduly Bicep slouží ke zlepšení čitelnosti souborů Bicep. Tyto moduly jsou také škálovatelné. Uživatelé můžou sdílet moduly napříč týmy, aby se zabránilo duplikaci kódu a snížili počet chyb. Další informace o definování modulu Bicep najdete v tématu Moduly Bicep.
V Terraformu jsou moduly primárním prostředkem balení a opakovaného používání konfigurací prostředků napříč týmy. Moduly Terraformu jsou kontejnery pro více prostředků, které jsou zabalené jako jedna logická jednotka. Modul se skládá z kolekce a/nebo .tf.json
souborů uložených .tf
společně v adresáři. Kromě modulů z místního systému souborů může Terraform také načítat moduly z různých zdrojů. Mezi tyto zdroje patří registr, místní cesta, moduly a GitHub.
Životní cyklus zřizování
Terraform i Bicep umožňují vývojářům ověřit konfiguraci před nasazením a pak změny použít. Terraform poskytuje větší flexibilitu při zničení všech vzdálených objektů spravovaných konkrétní konfigurací. Tato funkce je užitečná k vyčištění dočasných objektů po dokončení práce. Při výběru nejlepší možnosti je důležité zvážit požadavky na životní cyklus typických nasazení infrastruktury.
Bicep nabízí operaci citlivostní analýza, která umožňuje zobrazit náhled změn před nasazením souboru Bicep. Azure Resource Manager poskytuje what-if
operaci a neprovádí žádné změny stávajících prostředků. Pak je možné pomocí Azure PowerShellu nebo Azure CLI se soubory Bicep nasadit prostředky do Azure. Azure PowerShell a Azure CLI nepodporují nasazení vzdálených souborů Bicep. Pomocí rozhraní příkazového řádku Bicep ale můžete sestavit soubor Bicep do šablony JSON a pak soubor JSON načíst do vzdáleného umístění.
Příkaz terraform plan v Terraformu je podobný operaci Bicepwhat-if
. terraform plan
Pomocí příkazu vytvoříte plán provádění, který se zobrazí ve verzi Preview, než ho použijete. Pak plán provádění použijete pomocí příkazu terraform apply . Téměř cokoli, co s Terraformem děláte, zahrnuje použití příkazů terraform plan
i terraform apply
příkazů.
Začínáme
Bicep i Terraform nabízejí prostředky, které vám pomůžou začít. Modul Learn pro Bicep vám pomůže definovat způsob konfigurace prostředků Azure. Také vás provedou nasazením několika prostředků Azure, abyste měli praktické zkušenosti.
Stejně tak HashiCorp Learn poskytuje uživatelům různé školicí prostředky Terraformu, které vás naučí, jak nainstalovat a používat Terraform. Mezi tyto prostředky patří informace, které ukazují, jak pomocí Terraformu zřídit infrastrukturu v Azure.
Vytváření kódu
Prostředí pro vytváření kódu závisí na počtu doplňků, které jsou dostupné pro váš editor podle vašeho výběru. Bicep i Terraform naštěstí nabízejí prostředky ke zlepšení efektivity vytváření kódu.
Pro Bicep je jedním z nejúčinnějších doplňků rozšíření Bicep Visual Studio Code. Rozšíření poskytuje funkce, jako je ověřování kódu, IntelliSense, přístup k vlastnostem tečky a automatické dokončování vlastností.
Pro Terraform nabízí rozšíření Terraform Visual Studio Code s Terraform Language Serverem mnoho stejných funkcí jako rozšíření Bicep Visual Studio Code. Rozšíření například podporuje zvýrazňování syntaxe, IntelliSense, navigaci v kódu a průzkumníka modulů. HashiCorp také nabízí [podrobné pokyny k instalaci] v úložišti GitHubu (https://github.com/hashicorp/terraform-ls/blob/main/docs/USAGE.md) pro konfiguraci a použití serveru Terraform Language Server.
Pokrytí Azure
Bicep má oproti Terraformu výhodu při konfiguraci prostředků Azure. Bicep je hluboce integrovaný se službami Azure. Kromě toho nabízí okamžitou podporu nových funkcí Azure. Terraform poskytuje dva poskytovatele, kteří uživatelům umožňují spravovat Azure: AzureRM a AzAPI. Poskytovatel AzureRM nabízí plně přizpůsobené prostředí pro stabilní služby Azure. Někdy může docházet k tomuto přizpůsobenému prostředí, což může způsobit zpoždění. Zprostředkovatel AzAPI je dynamická vrstva nad rozhraními REST API Azure Resource Manageru, která – jako je Bicep – umožňuje okamžitou podporu nových funkcí Azure. Před rozhodováním je důležité zvážit požadavky vaší organizace na infrastrukturu a to, jestli jsou plně podporované.
Komunita a podpora
Komunita hraje klíčovou roli při učení a překonání výzev. Komunity Terraformu i Bicep nabízejí vysokou úroveň zapojení a podpory.
Podpora Bicep, kde můžete získat pomoc, závisí na povaze problému:
- Chyby dokumentace: V případě problémů s dokumentací k Bicep v Microsoft Learn má každý článek část Váš názor.
- Zdrojový kód Bicep a zařazování chyb: Navštivte úložiště GitHubu Microsoft Bicep, kde můžete přispívat k opensourcovým chybám produktu Bicep a souboru chyb.
Informace o podpoře Terraformu, kde najdete pomoc, závisí na povaze problému:
Chyby dokumentace: V případě problémů s dokumentací k Terraformu v Microsoft Learn má každý článek sekci Váš názor.
Zdrojový kód zprostředkovatele a zařazování chyb: Microsoft má úložiště GitHub, kde můžete zařazuje chyby a přispíváte do opensourcových poskytovatelů Terraform Azure. Pokud chcete zobrazit seznam dostupných poskytovatelů, přejděte do organizace Azure GitHub a zadejte terraform-provider-
do pole Najít úložiště...
Základní otázky k Terraformu: Navštivte část Terraformu na portálu komunity HashiCorp.
Dotazy související s poskytovatelem Terraformu: Navštivte část Poskytovatelé Terraformu na portálu komunity HashiCorp.
Shrnutí
Bicep a Terraform jsou dvě úvodní možnosti IaC, které usnadňují konfiguraci a nasazení prostředků Azure. Obě nabízejí uživatelsky přívětivé funkce, které organizacím pomáhají zvýšit efektivitu a produktivitu. Při posuzování toho nejvhodnějšího pro vaši organizaci pečlivě zvažte požadavky a předvolby infrastruktury.