Nasazení pracovního postupu Azure Logic Apps pomocí šablony Azure Resource Manageru

Dokončeno

Pokud už Azure nějakou dobu používáte, určitě jste slyšeli o Azure Resource Manageru. Pojďme se na roli Resource Manageru podívat a definovat, co tvoří šablonu Resource Manageru.

Co je Azure Resource Manager?

Azure Resource Manager je rozhraní pro správu a organizaci cloudových prostředků. Představte si Resource Manager jako způsob nasazení cloudových prostředků.

Pokud znáte skupiny prostředků Azure, víte, že umožňují považovat sady souvisejících prostředků za jednu jednotku. Resource Manager slouží k organizaci skupin prostředků, které vám umožňují nasazovat, spravovat a odstraňovat všechny prostředky najednou v rámci jedné akce.

Přemýšlejte o finančních modelech, které provozujete pro analytiky. Pokud chcete spustit model, budete možná potřebovat jeden nebo více virtuálních počítačů, databázi k ukládání dat a virtuální síť, abyste umožnili připojení mezi vším. Pomocí Resource Manageru můžete tyto prostředky nasadit do stejné skupiny prostředků a spravovat je a monitorovat společně. Až skončíte, můžete všechny prostředky v této skupině prostředků odstranit jedinou operací.

Co jsou šablony Resource Manageru?

Šablona Resource Manageru přesně definuje všechny prostředky Resource Manageru v určitém nasazení. Šablonu Resource Manageru můžete do skupiny prostředků nasadit jako jednu operaci.

Šablona Resource Manageru je soubor JSON a šablona je forma deklarativní automatizace. Deklarativní automatizace znamená, že definujete , jaké prostředky potřebujete, ale ne jak je vytvořit. Jinak definujete, co potřebujete, ale Resource Manager musí zajistit správné nasazení prostředků.

Deklarativní automatizace se podobá tomu, jak webové prohlížeče zobrazují soubory HTML. Soubor HTML popisuje, jaké elementy se objeví na stránce, ale nepopisuje, jak se mají zobrazit. Za toto „jak“ zodpovídá webový prohlížeč.

Poznámka:

Možná uslyšíte šablony Resource Manageru, které se označují jako šablony ARM. Dáváme přednost úplným názvům šablon Azure Resource Manageru nebo šablon Resource Manageru.

Proč používat šablony Resource Manageru?

Použití šablon Resource Manageru umožňuje rychlejší a opakovatelnější nasazení. Nemusíte už například vytvořit virtuální počítač na portálu, počkat na jeho dokončení, pak vytvořit další atd. Resource Manager se postará o kompletní nasazení za vás.

Zde jsou některé další výhody, které stojí za zvážení:

  • Šablony zlepšují konzistenci.

    Šablony Resource Manageru poskytují vám a ostatním společný jazyk pro popis nasazení. Struktura, formát a výrazy uvnitř šablony zůstávají stejné bez ohledu na to, jaký nástroj nebo sada SDK se používá k nasazení této šablony.

  • Šablony pomáhají vyjádřit složitá nasazení.

    Šablony umožňují nasadit několik prostředků ve správném pořadí. Virtuální počítač byste například nechtěli nasadit před vytvořením disku s operačním systémem nebo síťového rozhraní. Resource Manager má přehled o všech prostředcích a jejich závislých prostředcích a nejdříve vytvoří závislé prostředky. Mapování závislostí pomáhá zajistit, aby se nasazení prováděla ve správném pořadí.

  • Šablony snižují ruční úlohy náchylné k chybám.

    Ruční vytváření a propojování prostředků může být časově náročné a během tohoto procesu mohou snadno vzniknout chyby. Resource Manager zajišťuje, aby nasazení probíhala pokaždé stejným způsobem.

  • Šablony jsou kód.

    Šablony vyjadřují vaše požadavky prostřednictvím kódu. Šablonu si můžete představit jako typ infrastruktury jako kód , který můžete sdílet, testovat a verzi jako jakýkoli jiný software. Protože šablony jsou kód, můžete si navíc vytvořit „psaný záznam“, který se dá sledovat. Kód šablony slouží k dokumentaci nasazení. Většina uživatelů udržuje své šablony v rámci nějakého druhu správy verzí, jako je Git. Při změnách šablony také její historie revizí dokumentuje, jak se šablona (a vaše nasazení) průběžně vyvíjí.

  • Šablony podporují opakované použití.

    Šablona může obsahovat parametry, které se vyplní při spuštění šablony. Parametr může definovat uživatelské jméno nebo heslo, název domény atd. Parametry šablony umožňují vytvořit více verzí infrastruktury, jako je příprava a produkce, ale stále využívat stejnou šablonu.

  • Šablony jsou propojitelné.

    Šablony Resource Manageru můžete propojit, aby byly samotné šablony modulární. Můžete vytvořit malé šablony, které definují jednotlivé části řešení, a jejich kombinací pak vytvořit kompletní systém.

Modely, které používají finanční analytici, jsou jedinečné, ale v základní infrastruktuře si můžete všimnout určitých vzorů. Většina modelů například vyžaduje databázi k ukládání dat. Mnohé modely používají stejné programovací jazyky, architektury a operační systémy. Můžete definovat šablony, které popisují jednotlivé komponenty, jako jsou výpočetní prostředky, úložiště a sítě. Potom můžete kombinovat komponenty tak, aby vyhovovaly konkrétním potřebám jednotlivých analytiků.

Co obsahuje šablona Resource Manageru?

Poznámka:

Tady uvidíte několik příkladů kódu, které vám poskytnou představu o struktuře jednotlivých oddílů. Nemějte obavy, pokud vám to, co vidíte, není pro vás neznámé. Můžete si prohlédnout šablony ostatních a napsat si vlastní, jakmile získáte více praktických zkušeností.

Před odesláním dat mezi servery a webovými aplikacemi jste možná použili JavaScript Object Notation (JSON). JSON je rovněž oblíbeným způsobem popisu konfigurace aplikací a infrastruktury.

JSON nám umožňuje vyjádřit data uložená jako objekt, například virtuální počítač, v textu. Dokument JSON je v podstatě kolekce dvojic klíč-hodnota. Každý klíč je řetězec. Hodnota klíče může být řetězec, číslo, logický výraz, seznam hodnot nebo objekt, což je kolekce jiných párů klíč-hodnota.

Šablona Resource Manageru může obsahovat následující části:

{
    "$schema": "http://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "",
    "parameters": {  },
    "variables": {  },
    "functions": [  ],
    "resources": [  ],
    "outputs": {  }
}

I když se tyto oddíly vyjadřují pomocí FORMÁTU JSON, nesouvisejí se skutečným jazykem JSON. Pojďme se podrobněji podívat na jednotlivé části.

Parametry

V této části určíte, které hodnoty se dají konfigurovat při spuštění šablony. Můžete například umožnit uživatelům šablony zadat uživatelské jméno, heslo nebo název domény.

Tady je příklad, který znázorňuje dva parametry: jeden pro uživatelské jméno virtuálního počítače a jeden pro jeho heslo.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "Username for the Virtual Machine."
    }
  },
  "adminPassword": {
    "type": "securestring",
    "metadata": {
      "description": "Password for the Virtual Machine."
    }
  }
}

Proměnné

V této části definujete hodnoty, které se používají v celé šabloně. Proměnné umožňují snadnější správu šablon. Můžete například jednou definovat název účtu úložiště jako proměnnou a používat ji na jiných místech šablony. Pokud se název účtu úložiště změní, stačí aktualizovat jen tuto proměnnou.

Zde je příklad, který ukazuje několik proměnných popisujících síťové funkce virtuálního počítače.

"variables": {
  "nicName": "myVMNic",
  "addressPrefix": "10.0.0.0/16",
  "subnetName": "Subnet",
  "subnetPrefix": "10.0.0.0/24",
  "publicIPAddressName": "myPublicIP",
  "virtualNetworkName": "MyVNET"
}

Funkce

V této části definujete procedury, které nechcete opakovat v celé šabloně. Stejně jako proměnné pomáhají funkce s jednodušší údržbou šablon. Tento příklad vytvoří funkci pro sestavení jedinečného názvu, který se dá použít při vytváření prostředků, které mají požadavky na globálně jedinečné pojmenování.

"functions": [
  {
    "namespace": "contoso",
    "members": {
      "uniqueName": {
        "parameters": [
          {
            "name": "namePrefix",
            "type": "string"
          }
        ],
        "output": {
          "type": "string",
          "value": "[concat(toLower(parameters('namePrefix')), uniqueString(resourceGroup().id))]"
        }
      }
    }
  }
],

Zdroje informací

V tomto oddílu se definují prostředky Azure, které jsou součástí nasazení.

Zde je příklad, který vytvoří prostředek veřejné IP adresy.

{
  "type": "Microsoft.Network/publicIPAddresses",
  "name": "[variables('publicIPAddressName')]",
  "location": "[parameters('location')]",
  "apiVersion": "2018-08-01",
  "properties": {
    "publicIPAllocationMethod": "Dynamic",
    "dnsSettings": {
      "domainNameLabel": "[parameters('dnsLabelPrefix')]"
    }
  }
}

Typ tohoto prostředku je Microsoft.Network/publicIPAddresses. Jeho název se načte z oddílu proměnných a jeho umístění (nebo oblast Azure) se načte z oddílu parametrů.

Protože typy prostředků se v průběhu času mohou měnit, odkazuje apiVersion na verzi typu prostředku, který chcete použít. S tím, jak se typy prostředků vyvíjejí a mění, můžete šablony upravit tak, aby fungovaly s nejnovějšími funkcemi, až budete připraveni.

Výstupy

V této části definujete všechny informace, které chcete získat při spuštění šablony. Můžete například chtít dostat IP adresu nebo plně kvalifikovaný název domény virtuálního počítače, což jsou informace, které neznáte, dokud se nasazení nespustí.

Následující příklad ukazuje výstup s názvem hostname. Hodnota plně kvalifikovaného názvu domény se načte z nastavení veřejné IP adresy virtuálního počítače.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]"
  }
}

Návody nasadit pracovní postup Azure Logic Apps do šablony?

Pracovní postup Azure Logic Apps je prostředek v Azure. Proto ji můžeme nasadit do šablony tak, že ji přidáme do seznamu prostředků, které se mají nasadit v resources části šablony Resource Manageru. Co konkrétně je nutné přidat do oddílu prostředků, aby se daný pracovní postup definoval? Do oddílu prostředků je nutné přidat definici pracovního postupu JSON pro příslušný pracovní postup. Následující fragment kódu JSON tedy ukazuje šablonu Resource Manageru pro nasazení základního pracovního postupu, který jsme popsali v předchozí lekci. Jak lze vidět pomocí zvýraznění, oddíl prostředků obsahuje úplnou definici pracovního postupu.

{
    "$schema": "https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#",
    "contentVersion": "1.0.0.0",
    "parameters": {},
    "variables": {},
    "resources": [
        {
            "type": "Microsoft.Logic/workflows",
            "apiVersion": "2017-07-01",
            "name": "HelloLogicAppsTemplate",
            "location": "westus2",
            "properties": {
                "state": "Enabled",
                "definition": {
                    "$schema": "https://schema.management.azure.com/providers/Microsoft.Logic/schemas/2016-06-01/workflowdefinition.json#",
                    "contentVersion": "1.0.0.0",
                    "parameters": {},
                    "triggers": {
                        "manual": {
                            "type": "Request",
                            "kind": "Http",
                            "inputs": {
                                "method": "GET",
                                "schema": {}
                            }
                        }
                    },
                    "actions": {
                        "Response": {
                            "runAfter": {},
                            "type": "Response",
                            "kind": "Http",
                            "inputs": {
                                "body": "Hello Logic Apps Template!",
                                "statusCode": 200
                            }
                        }
                    },
                    "outputs": {}
                },
                "parameters": {}
            }
        }
    ],
    "outputs": {
        "logicAppUrl": {
           "type": "string",
           "value": "[listCallbackURL(concat(resourceId('Microsoft.Logic/workflows/', 'HelloLogicAppsTemplate'), '/triggers/manual'), '2017-07-01').value]"
        }
     }
}

Tuto šablonu můžeme nasadit pomocí jedné z následujících metod:

  • Nasazení pomocí webu Azure Portal
  • Nasazení pomocí modulu PowerShellu Az
  • Nasazení z rozhraní příkazového řádku Azure (CLI)

V tomto modulu nasadíme šablony pomocí Azure CLI a příkazů az deployment group.

Jak si můžu vytvořit šablonu Resource Manageru?

Šablony Resource Manageru můžete vytvářet mnoha způsoby. I když si šablonu můžete napsat od začátku, je běžné začít s existující šablonou a upravit ji tak, aby odpovídala vašim potřebám.

Zde je několik způsobů, jak získáte šablonu do začátku:

  • Pomocí webu Azure Portal vytvořte šablonu založenou na prostředcích v existující skupině prostředků.
  • Začněte šablonou, kterou jste vytvořili vy nebo váš tým a která slouží k podobnému účelu.
  • Začínáme se šablonou Rychlého startu Azure; V další lekci se dozvíte, jak na to.

Bez ohledu na použitý způsob se k vytváření šablony používá textový editor. Můžete použít oblíbený editor, ale rozšíření Azure Resource Manager Tools pro Visual Studio Code je speciálně navržené pro vytváření šablon. Toto rozšíření usnadňuje navigaci v kódu šablony a poskytuje automatické dokončování pro mnoho běžných úloh.

Při zkoumání a psaní šablon si projděte dokumentaci a seznamte se s dostupnými typy prostředků a jejich použitím.

V další lekci prozkoumáme a nasadíme existující šablonu z Azure CLI.