Co je šablona ARM?

S přechodem na cloud mnoho týmů přijalo agilní metody vývoje. Tyto týmy provádějí opakované operace rychle. Potřebují opakovaně nasazovat svá řešení do cloudu a vědět, že mají infrastrukturu ve spolehlivém stavu. Vzhledem k tomu, že se infrastruktura stala součástí iterativního procesu, dělení mezi provozem a vývojem zmizelo. Týmy potřebují spravovat infrastrukturu a kód aplikací prostřednictvím jednotného procesu.

Abyste těmto výzvám mohli čelit, můžete automatizovat nasazení a využívat praktické postupy infrastruktury jako kód. V kódu definujete infrastrukturu, kterou je potřeba nasadit. Kód infrastruktury se stane součástí projektu. Stejně jako kód aplikace uložíte kód infrastruktury do zdrojového úložiště a budete ho verzí. Kdokoli z vašeho týmu může spustit kód a nasadit podobná prostředí.

Pokud chcete pro svá řešení Azure implementovat infrastrukturu jako kód, použijte šablony Azure Resource Manageru (šablony ARM). Šablona je soubor JSON (JavaScript Object Notation), který definuje infrastrukturu a konfiguraci projektu. Tato šablona využívá deklarativní syntaxi, která umožňuje prohlásit, co máte v úmyslu vytvořit, aniž by k tomu bylo nutné psát sekvence programových příkazů. V šabloně zadáte prostředky, které se mají nasadit, a vlastnosti těchto prostředků.

Tip

Zavedli jsme nový jazyk s názvem Bicep , který nabízí stejné funkce jako šablony ARM, ale se syntaxí, která se snadněji používá. Každý soubor Bicep se během nasazení automaticky převede na šablonu ARM. Pokud uvažujete o infrastruktuře jako možnostech kódu, doporučujeme podívat se na Bicep. Další informace najdete v tématu Co je Bicep?.

Informace o tom, jak začít používat šablony ARM, najdete v následujícím videu.

Proč zvolit šablony ARM?

Pokud se pokoušíte rozhodnout mezi použitím šablon ARM a jedné z dalších infrastruktur jako služeb kódu, zvažte následující výhody použití šablon:

  • Deklarativní syntaxe: Šablony ARM umožňují vytvořit a nasadit celou infrastrukturu Azure deklarativně. Můžete například nasadit nejen virtuální počítače, ale také síťovou infrastrukturu, systémy úložiště a všechny další prostředky, které budete potřebovat.

  • Opakovatelné výsledky: Opakovaně nasaďte infrastrukturu v průběhu životního cyklu vývoje a mějte jistotu, že se vaše prostředky nasazují konzistentním způsobem. Šablony jsou idempotentní, což znamená, že můžete stejnou šablonu nasadit mnohokrát a získat stejné typy prostředků ve stejném stavu. Můžete vyvinout jednu šablonu, která bude představovat požadovaný stav, a nemusíte vyvíjet velké množství samostatných šablon představujících aktualizace.

  • Orchestrace: Nemusíte si dělat starosti se složitostmi operací řazení. Resource Manager orchestruje nasazení vzájemně závislých prostředků tak, aby se vytvořily ve správném pořadí. Pokud je to možné, nasazuje Resource Manager prostředky paralelně, aby se nasazení dokončila rychleji než sériová nasazení. Šablonu nasadíte pomocí jednoho příkazu, nikoli prostřednictvím několika imperativních příkazů.

    Diagram znázorňující rozdíl mezi imperativním a deklarativním nasazením

  • Modulární soubory: Šablony můžete rozdělit do menších opakovaně použitelných komponent a propojit je v době nasazení. Jednu šablonu můžete také vnořit do jiné šablony.

  • Vytvoření libovolného prostředku Azure: Nové služby a funkce Azure můžete okamžitě používat v šablonách. Jakmile poskytovatel prostředků zavede nové prostředky, můžete tyto prostředky nasadit prostřednictvím šablon. Před použitím nových služeb nemusíte čekat na aktualizaci nástrojů nebo modulů.

  • Rozšiřitelnost: Pomocí skriptů nasazení můžete do šablon přidat skripty PowerShellu nebo Bash. Skripty nasazení rozšiřují vaši schopnost nastavit prostředky během nasazování. Skript může být zahrnut do šablony nebo uložený v externím zdroji a odkazovaný v šabloně. Skripty nasazení umožňují dokončit kompletní nastavení prostředí pomocí jedné šablony ARM.

  • Testování: Můžete zajistit, aby vaše šablona byla v souladu s doporučenými pokyny, a to tak, že ji otestujete pomocí sady nástrojů pro šablony ARM (arm-ttk). Tato testovací sada je skript PowerShellu, který si můžete stáhnout z GitHubu. Sada nástrojů usnadňuje rozvoj odborných znalostí pomocí jazyka šablony.

  • Náhled změn: Pomocí operace what-if (citlivostní analýza ) můžete získat náhled změn před nasazením šablony. Pomocí citlivostní analýzy uvidíte, které prostředky se vytvoří, aktualizují nebo odstraní, a všechny vlastnosti prostředků, které se změní. Operace citlivostní analýzy kontroluje aktuální stav vašeho prostředí a eliminuje potřebu správy stavu.

  • Integrované ověřování: Vaše šablona se nasadí až po úspěšném ověření. Resource Manager před zahájením nasazení zkontroluje šablonu, aby se ujistili, že nasazení proběhne úspěšně. Je méně pravděpodobné, že se vaše nasazení zastaví v částečně dokončeném stavu.

  • Sledované nasazení: V Azure Portal můžete zkontrolovat historii nasazení a získat informace o nasazení šablony. Uvidíte nasazenou šablonu, předané hodnoty parametrů a všechny výstupní hodnoty. Jiná infrastruktura jako služby kódu se nesleduje prostřednictvím portálu.

    Snímek obrazovky s Azure Portal zobrazující historii nasazení

  • Zásady jako kód: Azure Policy je zásada jako architektura kódu pro automatizaci zásad správného řízení. Pokud používáte zásady Azure, náprava zásad se provádí u prostředků, které nedodržují předpisy, při nasazení prostřednictvím šablon.

  • Podrobné plány nasazení: Ke splnění zákonných standardů a standardů dodržování předpisů můžete využít podrobné plány poskytované Microsoftem. Tyto podrobné plány zahrnují předem připravené šablony pro různé architektury.

  • Integrace CI/CD: Šablony můžete integrovat do nástrojů kontinuální integrace a průběžného nasazování (CI/CD), které umožňují automatizovat kanály verzí pro rychlé a spolehlivé aktualizace aplikací a infrastruktury. Pomocí Azure DevOps a úlohy Resource Manager šablony můžete pomocí Azure Pipelines nepřetržitě sestavovat a nasazovat projekty šablon ARM. Další informace najdete v tématech Projekt VS s kanály a Kurz: Kontinuální integrace šablon Azure Resource Manager s Azure Pipelines.

  • Exportovatelný kód: Šablonu pro existující skupinu prostředků můžete získat exportem aktuálního stavu skupiny prostředků nebo zobrazením šablony použité pro konkrétní nasazení. Zobrazení vyexportované šablony vám pomůže blíže se seznámit se syntaxí šablony.

  • Nástroje pro vytváření: Šablony můžete vytvářet pomocí editoru Visual Studio Code a rozšíření nástrojů pro šablony. Získáte IntelliSense, zvýrazňování syntaxe, vloženou nápovědu a mnoho dalších jazykových funkcí. Kromě editoru Visual Studio Code můžete použít také Visual Studio.

Soubor šablony

V rámci šablony můžete napsat výrazy šablony , které rozšiřují možnosti json. Tyto výrazy využívají funkce poskytované Resource Manager.

Šablona obsahuje následující části:

  • Parametry – Poskytují během nasazení hodnoty, které umožňují použití stejné šablony v různých prostředích.

  • Proměnné – Definujte hodnoty, které se v šablonách opakovaně používají. Dají se vytvořit z hodnot parametrů.

  • Uživatelem definované funkce – Můžete vytvářet přizpůsobené funkce, které zjednodušují šablonu.

  • Prostředky – Zadejte prostředky, které se mají nasadit.

  • Výstupy – vrátí hodnoty z nasazených prostředků.

Proces nasazení šablony

Když nasadíte šablonu, Resource Manager ji převede na operace rozhraní REST API. Když například Resource Manager obdrží šablonu s následující definicí prostředku:

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "mystorageaccount",
    "location": "centralus",
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "StorageV2"
  },
]

Převede definici na následující operaci rozhraní REST API, která se odešle do poskytovatele prostředků Microsoft.Storage:

PUT
https://management.azure.com/subscriptions/{subscriptionId}/resourceGroups/{resourceGroupName}/providers/Microsoft.Storage/storageAccounts/mystorageaccount?api-version=2022-09-01
REQUEST BODY
{
  "location": "centralus",
  "sku": {
    "name": "Standard_LRS"
  },
  "kind": "StorageV2",
  "properties": {}
}

Všimněte si, že verze apiVersion , kterou jste nastavili v šabloně pro prostředek, se používá jako verze rozhraní API pro operaci REST. Šablonu můžete nasadit opakovaně a mít jistotu, že bude i nadále fungovat. Při použití stejné verze rozhraní API se nemusíte starat o zásadní změny, které by mohly být zavedeny v novějších verzích.

K nasazení šablony použijte některou z následujících možností:

Návrh šablony

Záleží pouze na vás, jak definujete šablony a skupiny prostředků a jak chcete spravovat své řešení. Například můžete nasadit svou třívrstvou aplikaci prostřednictvím jediné šablony do jedné skupiny prostředků.

Diagram znázorňující nasazení třívrstvé aplikace pomocí jedné šablony

Není však nutné definovat celou infrastrukturu v jediné šabloně. Často má smysl rozdělit požadavky nasazení do několika cílených šablon, které jsou zaměřené na konkrétní účel. Tyto šablony můžete snadno opakovaně použít pro různá řešení. Pokud chcete nasadit konkrétní řešení, vytvořte hlavní šablonu, která prováže všechny požadované šablony. Následující obrázek znázorňuje způsob nasazení třívrstvého řešení prostřednictvím nadřazené šablony, která obsahuje tři vnořené šablony.

Diagram znázorňující nasazení třívrstvé aplikace pomocí vnořených šablon

Pokud si představíte, že vaše vrstvy mají tři samostatné životní cykly, můžete tyto tři vrstvy nasadit do samostatných skupin prostředků. Všimněte si, že prostředky mohou být stále propojené s prostředky v jiných skupinách prostředků.

Diagram znázorňující nasazení třívrstvé aplikace se samostatnými skupinami prostředků

Informace o vnořených šablonách najdete v tématu Použití propojených šablon s Azure Resource Managerem.

Sdílení šablon

Po vytvoření šablony ji můžete chtít sdílet s dalšími uživateli ve vaší organizaci. Specifikace šablony umožňují uložit šablonu jako typ prostředku. Řízení přístupu na základě role slouží ke správě přístupu ke specifikaci šablony. Uživatelé s přístupem ke specifikaci šablony pro čtení ji můžou nasadit, ale nemůžou šablonu změnit.

Tento přístup znamená, že můžete bezpečně sdílet šablony, které splňují standardy vaší organizace.

Další kroky