Seznámení se strukturou šablony Azure Resource Manageru
V této lekci se dozvíte, jak můžete pomocí šablon Azure Resource Manageru (šablon ARM) implementovat infrastrukturu jako kód. Projdete si oddíly šablony ARM, naučíte se postup jejího nasazení do Azure a podrobně se seznámíte s jejím oddílem resources.
Co je infrastruktura jako kód?
Infrastruktura jako kód umožňuje popsat prostřednictvím kódu infrastrukturu, kterou potřebujete pro vaši aplikaci.
Postupem ve formě infrastruktury jako kódu můžete spravovat kód aplikace i vše potřebné k nasazení aplikace v centrálním úložišti kódu. Mezi výhody infrastruktury jako kódu patří:
- Konzistentní konfigurace
- Jednodušší škálovatelnost
- Rychlejší nasazení
- Lepší sledovatelnost
Toto video vysvětluje infrastrukturu jako kód:
Co je šablona ARM?
Šablony ARM představují soubory JSON (JavaScript Object Notation), které definují infrastrukturu a konfiguraci nasazení. Šablona používá deklarativní syntaxi. Deklarativní syntaxe představuje způsob vytvoření struktury a prvků, které popisují, jak prostředky vypadají bez popisu toku řízení. Deklarativní syntaxe se liší od imperativní syntaxe, která používá příkazy určené k provedení počítačem. Imperativní skriptování se zaměřuje na určení všech kroků nasazení prostředků.
Prostřednictvím šablon ARM můžete deklarovat, co chcete nasadit, aniž byste museli napsat sekvenci programovacích příkazů pro vytvoření nasazení. V šabloně ARM zadáte prostředky a jejich vlastnosti. Azure Resource Manager pak pomocí této informace nasadí prostředky uspořádaným a konzistentním způsobem.
Výhody využití šablon ARM
Šablony ARM umožňují automatizovat nasazení a používat postup ve formě infrastruktury jako kódu (IaC). Kód šablony se stane součástí vaší infrastruktury a vývojových projektů. Soubory IaC můžete stejně jako kód aplikace ukládat v úložišti zdrojového kódu a můžete u nich vytvářet více verzí.
Šablony ARM jsou idempotentní. To znamená, že můžete stejnou šablonu nasadit opakovaně a vždy zajistit stejné prostředky ve stejném stavu.
Resource Manager orchestruje nasazení prostředků tak, aby se vytvořily ve správném pořadí. Pokud je to možné, prostředky se vytvářejí paralelně, takže nasazení šablon ARM se dokončí rychleji než skriptovaná nasazení.
Resource Manager má navíc integrované ověřování. Před zahájením nasazení zkontroluje šablonu, aby se ujistila, že nasazení proběhne úspěšně.
Pokud se zvýší složitost nasazení, můžete šablony ARM rozdělit na menší opakovaně použitelné komponenty. Tyto menší šablony pak můžete při nasazování vzájemně propojit. Taky je možné vnořovat šablony do jiných šablon.
Na portálu Azure Portal můžete zkontrolovat historii nasazení a získat informace o jeho stavu. Portál zobrazí hodnoty pro všechny parametry a výstupy.
Zároveň můžete šablony ARM integrovat do nástrojů kontinuální integrace a průběžného nasazování (CI/CD), jako je Azure Pipelines, takže zautomatizujete svoje kanály verze za účelem rychlých a spolehlivých aktualizací aplikací a infrastruktury. Přes úlohy šablon ARM a Azure DevOps můžete nepřetržitě sestavovat a nasazovat svoje projekty.
Struktura souborů šablon ARM
Když píšete šablonu ARM, musíte porozumět všem částem, které tvoří šablonu a co dělají. Soubory šablon ARM se skládají z následujících prvků:
Element (Prvek) | Popis |
---|---|
schéma | Povinný oddíl, který definuje umístění souboru schématu JSON s popisem struktury dat JSON. Použité číslo verze závisí na rozsahu nasazení a editoru JSON. |
contentVersion | Povinný oddíl, který definuje verzi šablony (například 1.0.0.0). Tuto hodnotu můžete použít k dokumentování významných změn šablony, abyste měli jistotu, že nasazujete správnou šablonu. |
apiProfile | Nepovinný oddíl, který definuje kolekci verzí API pro typy prostředků. Zadáním této hodnoty se můžete vyhnout specifikaci verzí API pro každý prostředek v šabloně. |
parameters | Nepovinný oddíl, ve kterém definujete hodnoty, které se zadávají během nasazení. Tyto hodnoty můžete zadat v souboru parametrů, pomocí parametrů příkazového řádku nebo na webu Azure Portal. |
proměnné | Nepovinný oddíl, kde definujete hodnoty umožňující zjednodušení výrazů jazyka šablony. |
funkce | Nepovinný oddíl, kde definujete uživatelem definované funkce dostupné v rámci šablony. Uživatelem definované funkce můžou šablonu zjednodušit v případech, kdy se v ní opakovaně používají složité výrazy. |
prostředky | Povinný oddíl definující skutečné položky ve skupině prostředků nebo předplatném, které chcete nasadit nebo aktualizovat. |
výstup | Volitelný oddíl, ve kterém zadáte hodnoty vrácené na konci nasazení. |
Nasazení šablony ARM do Azure
Šablonu ARM můžete do Azure nasadit jedním z následujících způsobů:
- Nasazení místní šablony
- Nasazení propojené šablony
- Nasazení v kanálu průběžného nasazování
Tento modul se věnuje nasazení místní šablony ARM. V budoucích modulech Learn se dozvíte, jak nasadit složitější infrastrukturu a jak integrovat se službou Azure Pipelines.
Pokud chcete nasadit místní šablonu, je nutné si místně nainstalovat buď Azure PowerShell, nebo Azure CLI.
Nejdříve se přihlaste do Azure pomocí Azure CLI nebo Azure PowerShellu.
az login
Dále definujte skupinu prostředků. Můžete použít již definovanou skupinu prostředků nebo vytvořit novou pomocí následujícího příkazu. Dostupné hodnoty umístění můžete získat z: az account list-locations
(CLI) nebo Get-AzLocation
(PowerShell). Výchozí umístění můžete nakonfigurovat pomocí .az configure --defaults location=<location>
az group create \
--name {name of your resource group} \
--location "{location}"
Pokud chcete spustit nasazení šablony ve skupině prostředků, použijte příkaz Azure CLI az deployment group create nebo příkaz Azure PowerShellu New-AzResourceGroupDeployment.
Tip
Rozdíl mezi az deployment group create
a az group deployment create
je, že az group deployment create
je starý příkaz, který má být zastaralý a bude nahrazen .az deployment group create
Proto doporučujeme nasadit az deployment group create
prostředky v rámci oboru skupiny prostředků.
Oba příkazy vyžadují skupinu prostředků, oblast a název nasazení, abyste ji mohli snadno identifikovat v historii nasazení. Pro usnadnění cvičení vytvoří proměnnou, která uloží cestu k souboru šablony. Tato proměnná usnadňuje spouštění příkazů nasazení, protože při každém nasazení nemusíte znovu zadávat cestu. Tady je příklad:
Jestliže chcete spustit tento příkaz nasazení, musíte mít k dispozici nejnovější verzi Azure CLI.
templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
--name blanktemplate \
--resource-group myResourceGroup \
--template-file $templateFile
Propojené šablony se používají k nasazení komplexních řešení. Šablonu můžete rozdělit na mnoho šablon a nasadit je přes hlavní šablonu. Když nasadíte hlavní šablonu, aktivuje nasazení propojené šablony. Propojenou šablonu můžete uložit a zabezpečit pomocí tokenu SAS.
Kanál CI/CD automatizuje vytváření a nasazování vývojových projektů, mezi které patří i projekty šablony ARM. Dva nejběžnější kanály používané pro nasazení šablony jsou Azure Pipelines a GitHub Actions.
Podrobnější informace o těchto dvou typech nasazení najdete v dalších modulech.
Přidání prostředků do šablony
Pokud chcete do šablony přidat prostředek, potřebujete znát poskytovatele prostředků a jeho typy prostředků. Syntaxe této kombinace má formát {poskytovatel-prostřeků}/{typ-prostředku}. Pokud například chcete do šablony přidat prostředek účtu úložiště, potřebujete Microsoft.Storage
poskytovatele prostředků. Jedním z typů tohoto poskytovatele je storageAccount
. Váš typ prostředku se tedy zobrazí jako Microsoft.Storage/storageAccounts
. Můžete použít seznam poskytovatelů prostředků pro služby Azure, kde najdete poskytovatele, které potřebujete.
Jakmile definujete poskytovatele a typ prostředku, musíte porozumět vlastnostem každého typu prostředku, který chcete použít. Podrobnosti najdete v článku o definici prostředků v šabloně Azure Resource Manageru. Pokud chcete najít prostředek, zobrazte seznam v levém sloupci. Všimněte si, že vlastnosti jsou seřazené podle verze API.
Následuje příklad některých vlastností uvedených na stránce účtů úložiště:
Šablona pro náš příklad úložiště může vypadat takto:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"apiProfile": "",
"parameters": {},
"variables": {},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2023-05-01",
"name": "learntemplatestorage123",
"location": "westus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {}
}