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. Pak přidáte parametr, který definuje, které 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) také přidáte užitečný výstup, který můžete použít později v procesu nasazení.
Vytvoření parametrů pro šablonu ARM
V této části zlepšíte flexibilitu šablony ARM přidáním parametrů, které se dají nastavit při spuštění. 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 parameters. 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á to jako v tomto příkladu:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Změňte parametr z parametru1 na storageName a ponechte typ jako řetězec. Přidejte hodnotu minLength 3 a maxLength 24. Přidejte hodnotu popisu Název prostředku Azure Storage.
Blok parametrů by teď měl vypadat jako v tomto příkladu:
"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 vypadá jako v tomto příkladu kódu:{ "$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": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS" } } ], "outputs": {} }
Uložte soubor.
Nasazení parametrizované šablony ARM
V této části změníte název nasazení, aby lépe odpovídal účelu nasazení, a vyplníte hodnotu pro nový parametr.
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 aktualizuje prostředek místo vytvoření nového prostředku.
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 aktualizuje prostředek místo vytvoření nového prostředku.
$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, který omezuje povolené hodnoty
V této části pomocí parametrů omezíte hodnoty povolené pro určitý 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í kód:
"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é tento parametr umožňuje. Pokud se šablona spustí s hodnotou, která není povolená, nasazení selže.
Přidejte k parametru komentář.
Šablony ARM podporují komentáře
//
a/* */
.Aktualizujte oddíl resources, aby používal parametr
storageSKU
. Pokud v editoru Visual Studio Code využijete IntelliSense, usnadníte si tento krok."sku": { "name": "[parameters('storageSKU')]" }
Celý soubor vypadá jako v tomto příkladu kódu:
{ "$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": [ { "type": "Microsoft.Storage/storageAccounts", "apiVersion": "2023-05-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }
Uložte soubor.
Nasazení šablony ARM
Tady nasazení proběhne úspěšně díky tomu, že používáte parametr storageSKU
, který se nachází na seznamu povolených parametrů. Pak se pokusíte nasadit šablonu pomocí parametru storageSKU
, který není v seznamu povolených. Druhé nasazení selže podle očekávání.
Nasaďte šablonu spuštěním následujících příkazů. 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 aktualizuje prostředek místo vytvoření nového prostředku.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. Seznam povolených hodnot zabrá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 aktualizuje prostředek místo vytvoření nového prostředku.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.
Nasaďte šablonu spuštěním následujících příkazů. 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 aktualizuje prostředek místo vytvoření nového prostředku.$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. Seznam povolených hodnot zabrá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 aktualizuje prostředek místo vytvoření nového prostředku.$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
V této části přidáte do oddílu outputs
š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. Do šablony přidá obecný výstup, který vypadá jako v tomto příkladu:
"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]" }
Uložte soubor.
Nasazení šablony ARM s výstupem
V této části nasadíte šablonu a uvidíte výstup koncových bodů ve formátu 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 aktualizuje prostředek místo vytvoření nového prostředku.
Nasaďte šablonu spuštěním následujících příkazů. 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.
Nasaďte šablonu spuštěním následujících příkazů. 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.