Seznámení se strukturou šablony Azure Resource Manageru

Dokončeno

V této lekci se dozvíte o použití šablon Azure Resource Manageru (šablon ARM) k implementaci infrastruktury jako kódu. Prozkoumáte části šablony ARM, naučíte se nasazovat šablonu ARM do Azure a podrobně se seznámíte s oddílem prostředků šablony ARM.

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 budou prostředky vypadat 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ředí se navíc vytvoří paralelně, takže nasazení šablony ARM se dokončují rychleji než nasazení pomocí skriptů.

Diagram showing a mapping of the template processing procedure. There's only one call to process a template as opposed to several calls to process scripts.

Resource Manager má navíc integrované ověřování. Než zahájí nasazení, zkontroluje šablonu, aby bylo jisté, že se nasazení provede ú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ématu 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í. Dané hodnoty je možné zadat přes soubor parametrů, přes parametry příkazového řádku nebo přes web 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.
Zdroje Povinný oddíl definující skutečné položky ve skupině prostředků nebo předplatném, které chcete nasadit nebo aktualizovat.
Výstup Nepovinný oddíl, kde určujete hodnoty vracené 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 příštích modulech Learn se naučíte, jak nasazovat složitější infrastrukturu a jak zajistit integraci s 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

Jestliže chcete přidat prostředek do šablony, budete muset 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ě, budete potřebovat poskytovatele prostředků Microsoft.Storage. Jedním z typů tohoto poskytovatele je storageAccount. Typ prostředku se pak zobrazí jako Microsoft.Storage/storageAccounts. Můžete použít seznam poskytovatelů prostředků pro služby Azure, kde najdete poskytovatele, které potřebujete.

Až definujete poskytovatele a typ prostředku, je nutné 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. Vyhledejte prostředek v seznamu v levém sloupci. Všimněte si, že vlastnosti jsou seřazené podle verze API.

Screenshot of a Microsoft documentation page showing the storage account documentation selected.

Následuje příklad některých vlastností uvedených na stránce účtů úložiště:

Screenshot of a Microsoft documentation page showing some of the storage account properties.

Š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": "2019-06-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}