Cvičení – přidání parametrů a výstupů do šablony Azure Resource Manageru
V tomto cvičení přidáte parametr pro definování názvu účtu úložiště Azure během nasazování. Pak přidáte parametr, který definuje, jaké skladové položky účtu úložiště jsou povolené, a definujete, který z nich se má použít pro toto nasazení. Do šablony Azure Resource Manageru (šablony ARM) přidáte také užitečný výstup, který můžete použít později v procesu nasazení.
Vytvoření parametrů pro šablonu ARM
Tady nastavíte šablonu ARM flexibilněji přidáním parametrů, které je možné nastavit za běhu. Vytvoříte parametr pro hodnotu storageName
.
V souboru azuredeploy.json v editoru Visual Studio Code umístěte kurzor do složených závorek v atributu parametrů. Vypadá takto:
"parameters":{},
Stiskněte Enter a zadejte par. Zobrazí se seznam souvisejících fragmentů. Zvolte nový parametr, který do šablony přidá obecný parametr. Vypadá takto:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Změňte parametr z parametru1 na storageName a ponechte typ jako řetězec. Přidejte hodnotu minLength3 a maxLength24. Přidejte hodnotu popisu Název prostředku Azure Storage.
Blok parametru by měl vypadat takto:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Použijte nový parametr v bloku
resources
pro hodnotuname
idisplayName
. Celý soubor bude vypadat takto:{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } }, "functions": [], "variables": {}, "resources": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS", "tier": "Standard" } } ], "outputs": {} }
Soubor uložte.
Nasazení parametrizované šablony ARM
Tady změníte název nasazení tak, aby lépe odpovídal tomu, co toto nasazení dělá, a vyplníte hodnotu nového parametru.
V terminálu spusťte následující příkazy Azure CLI. Tento fragment kódu je stejný, jaký jste použili už dříve. Změnil se však název nasazení. Vyplňte pro parametr storageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední lekci. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.
templateFile="azuredeploy.json"
today=$(date +"%d-%b-%Y")
DeploymentName="addnameparameter-"$today
az deployment group create \
--name $DeploymentName \
--template-file $templateFile \
--parameters storageName={your-unique-name}
V terminálu spusťte následující příkazy Azure PowerShellu. Tento fragment kódu je stejný, jaký jste použili už dříve. Změnil se však název nasazení. Vyplňte pro parametr storageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední lekci. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Kontrola nasazení
Po dokončení nasazení se vraťte do webu Azure Portal v prohlížeči. Přejděte do skupiny prostředků a podívejte se, že teď existují 3 úspěšná nasazení. Vyberte tento odkaz.
Všimněte si, že seznam zahrnuje všechna tři nasazení.
Stejně jako dříve si podrobně prohlédněte nasazení addnameparameter.
Přidání dalšího parametru pro omezení povolených hodnot
Tady použijete parametry k omezení hodnot povolených pro parametr.
Umístěte kurzor za pravou složenou závorku parametru
storageName
. Přidejte čárku a stiskněte Enter.Znovu zadejte par a vyberte nový parametr.
Změňte nový obecný parametr na následující:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Tady uvádíte hodnoty, které daný parametr povolí. Pokud se šablona spustí s hodnotou, která povolená není, nasazení se nepovede.
Přidejte k parametru komentář.
Šablony ARM podporují komentáře
//
a/* */
.Aktualizujte oddíl resources, aby používal parametr
storageSKU
. Usnadněte si tento krok tím, že využijete IntelliSense v editoru Visual Studio Code."sku": { "name": "[parameters('storageSKU')]" }
Celý soubor bude vypadat takto:
{ "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#", "contentVersion": "1.0.0.0", "parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } }, "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] } }, "functions": [], "variables": {}, "resources": [ { "name": "[parameters('storageName')]", "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2019-06-01", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]", "tier": "Standard" } } ], "outputs": {} }
Soubor uložte.
Nasazení šablony ARM
Tady úspěšně nasadíte pomocí parametru storageSKU
, který je v seznamu povolených. Pak se pokusíte nasadit šablonu pomocí storageSKU
parametru, který není v seznamu povolených. Druhé nasazení se podle očekávání nepovede.
Spusťte následující příkazy pro nasazení šablony. Vyplňte pro parametr
storageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_GRS storageName={your-unique-name}
Nechte nasazení dokončit. Toto nasazení se podle očekávání úspěšně povede. Povolené hodnoty brání uživatelům šablony předávat hodnoty parametrů, které pro prostředek nefungují. Pojďme se podívat, co se stane, když zadáte neplatnou jednotku SKU.
Spusťte následující příkazy pro nasazení šablony s parametrem, který není povolený. Tady jste změnili parametr
storageSKU
na hodnotu Basic. Vyplňte pro parametrstorageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addSkuParameter-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Basic storageName={your-unique-name}
Toto nasazení se nepovede. Podívejte se na související chybu.
Spusťte následující příkazy pro nasazení šablony. Vyplňte pro parametr
storageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Nechte nasazení dokončit. Toto nasazení se podle očekávání úspěšně povede. Povolené hodnoty brání uživatelům šablony předávat hodnoty parametrů, které pro prostředek nefungují. Pojďme se podívat, co se stane, když zadáte neplatnou jednotku SKU.
Spusťte následující příkazy pro nasazení šablony s parametrem, který není povolený. Tady jste změnili parametr
storageSKU
na hodnotu Basic. Vyplňte pro parametrstorageName
jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Toto nasazení se nepovede. Podívejte se na související chybu.
Přidání výstupu do šablony ARM
Tady přidáte do outputs
části šablony ARM výstup koncových bodů pro prostředek účtu úložiště.
V souboru azuredeploy.json v editoru Visual Studio Code umístěte kurzor do složených závorek v atributu
"outputs":{},
outputs .Stiskněte Enter a zadejte ho. Zobrazí se seznam souvisejících fragmentů kódu. Vyberte nový výstup. Tím se do šablony přidá generický výstup. Bude vypadat takto:
"outputs": { "output1": { "type": "string", "value": "value" }
Změňte "output1" na "storageEndpoint" a pak změňte hodnotu
type
na "object". Změňte hodnotuvalue
na [reference(parameters('storageName')).primaryEndpoints]. Tento výraz je ten, který jsme popsali v předchozí lekci, která získá data koncového bodu. Protože jsme jako typ zadali objekt , vrátí objekt ve formátu JSON."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Soubor uložte.
Nasazení šablony ARM s výstupem
Tady šablonu nasadíte a zobrazí se výstup koncových bodů jako JSON. Pro parametr storageName
musíte vyplnit jedinečný název. Nezapomeňte, že název musí být jedinečný v celém Azure. Můžete použít jedinečný název, který jste vytvořili v poslední části. V takovém případě Azure nevytvoří nový prostředek, ale aktualizuje stávající.
Spusťte následující příkazy pro nasazení šablony. Nezapomeňte nahradit {váš-jedinečný-název} jedinečným řetězcem.
templateFile="azuredeploy.json" today=$(date +"%d-%b-%Y") DeploymentName="addoutputs-"$today az deployment group create \ --name $DeploymentName \ --template-file $templateFile \ --parameters storageSKU=Standard_LRS storageName={your-unique-name}
Podívejte se na výstup.
Spusťte následující příkazy pro nasazení šablony. Nezapomeňte nahradit {váš-jedinečný-název} jedinečným řetězcem.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Podívejte se na výstup.
Kontrola nasazení výstupu
Na webu Azure Portal přejděte ke svému nasazení addOutputs. Najdete tam i svůj výstup.