Övning – Lägga till parametrar till din Azure Resource Manager-mall
I den här övningen lägger du till en parameter för att definiera Azure-lagringskontots namn under distributionen. Sedan lägger du till en parameter för att definiera vilka SKU:er för lagringskonto som tillåts och definiera vilken som ska användas för den här distributionen. Du kan också lägga till användbarhet i Azure Resource Manager-mallen (ARM-mall) genom att lägga till utdata som du kan använda senare i distributionsprocessen.
Skapa parametrar för ARM-mallen
Här gör du din ARM-mall mer flexibel genom att lägga till parametrar som kan ställas in vid körning. Skapa en parameter för storageName
-värdet.
I filen azuredeploy.json i Visual Studio Code placerar du markören inuti klammerparenteserna i parameterattributet. Det ser ut så här:
"parameters":{},
Välj Angeoch ange sedan par. En lista över relaterade kodfragment visas. Välj ny parameter, som lägger till en allmän parameter i mallen. Det ser ut som i det här exemplet:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Ändra parametern från parameter1 till storageName och lämna typen som en sträng. Lägg till ett minLength-värde för 3 och ett maxLength-värde för 24. Lägg till ett beskrivningsvärde för Namnet på Azure-lagringsresursen.
Parameterblocket bör nu se ut så här:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Använd den nya parametern i
resources
-blocket i värdenaname
ochdisplayName
. Hela filen ser ut som det här kodexemplet:{ "$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": {} }
Spara filen.
Distribuera den parametriserade ARM-mallen
Här ändrar du distributionens namn så att det bättre återspeglar vad distributionen gör och fyller i ett värde för den nya parametern.
Kör följande Azure CLI-kommandon i terminalen. Det här avsnittet är samma kod som du använde tidigare, men namnet på distributionen har ändrats. Fyll i ett unikt namn för storageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namn som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.
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}
Kör följande Azure PowerShell-kommandon i terminalen. Det här avsnittet är samma kod som du använde tidigare, men namnet på distributionen har ändrats. Fyll i ett unikt namn för storageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namn som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Kontrollera distributionen
När distributionen är klar går du tillbaka till Azure Portal i webbläsaren. Gå till resursgruppen och se att det nu finns 3 lyckade distributioner. Välj den här länken.
Observera att alla tre distributionerna finns i listan.
Utforska addnameparameter-distributionen precis som tidigare.
Lägg till en annan parameter som begränsar tillåtna värden
Här använder du parametrar för att begränsa de värden som tillåts för en parameter.
Placera markören efter den avslutande klammerparentesen för parametern
storageName
. Lägg till ett kommatecken och välj Retur.Ange igen par och välj new-parameter.
Ändra den nya allmänna parametern till följande kod:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Här visar du de värden som den här parametern tillåter. Om mallen körs med ett värde som inte tillåts misslyckas distributionen.
Lägg till en kommentar till denna parameter.
ARM-mallar kan användas med
//
- och/* */
-kommentarer.Uppdatera resurser för att använda
storageSKU
-parametern. Om du drar nytta av IntelliSense i Visual Studio Code gör det här steget enklare."sku": { "name": "[parameters('storageSKU')]" }
Hela filen ser ut som det här kodexemplet:
{ "$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": {} }
Spara filen.
Distribuera ARM-mallen
Här distribuerar du med hjälp av en storageSKU
-parameter som finns i listan över tillåtna parametrar. Sedan försöker du distribuera mallen med hjälp av en storageSKU
parameter som inte finns i listan över tillåtna. Den andra distributionen misslyckas som förväntat.
Distribuera mallen genom att köra följande kommandon. Fyll i ett unikt namn för
storageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.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}
Vänta tills distributionen är färdig. Distributionen slutförs som förväntat. Din lista över tillåtna värden förhindrar att mallens användare skickar in parametervärden som inte fungerar för resursen. Vi ska se vad som händer när du anger en ogiltig SKU.
Kör följande kommandon för att distribuera mallen med en otillåten parameter. Här ändrade du parametern
storageSKU
till Basic. Fyll i ett unikt namn förstorageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.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}
Den här distributionen misslyckas. Observera felet.
Distribuera mallen genom att köra följande kommandon. Fyll i ett unikt namn för
storageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Vänta tills distributionen är färdig. Distributionen slutförs som förväntat. Din lista över tillåtna värden förhindrar att mallens användare skickar in parametervärden som inte fungerar för resursen. Vi ska se vad som händer när du anger en ogiltig SKU.
Kör följande kommandon för att distribuera mallen med en otillåten parameter. Här ändrade du parametern
storageSKU
till Basic. Fyll i ett unikt namn förstorageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Den här distributionen misslyckas. Observera felet.
Lägga till utdata i ARM-mallen
Här lägger du till outputs
-avsnittet i ARM-mallen för att skapa slutpunkter för lagringskontoresursen.
I filen azuredeploy.json i Visual Studio Code placerar du markören inuti klammerparenteserna i utdataattributet
"outputs":{},
.Tryck på Retur och skriv sedan ut. Du får en lista över relaterade kodfragment. Välj ny utdata. Den lägger till en allmän utdata till mallen som ser ut som i det här exemplet:
"outputs": { "output1": { "type": "string", "value": "value" }
Ändra "output1" till "storageEndpoint" och ändra sedan värdet
type
för till "object". Ändra värdetvalue
för till "[reference(parameters('storageName')).primaryEndpoints]". Det här uttrycket är det som vi beskrev i föregående lektion som hämtar slutpunktsdata. Eftersom vi angav objektet som typ returnerar det objektet i JSON-format."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Spara filen.
Distribuera ARM-mallen med utdata
Här distribuerar du mallen och ser utdata för slutpunkter som JSON. Du måste fylla i ett unikt namn för storageName
-parametern. Kom ihåg att namnet måste vara unikt i hela Azure. Du kan använda det unika namnet som du skapade i det förra avsnittet. I så fall uppdaterar Azure resursen i stället för att skapa en ny.
Distribuera mallen genom att köra följande kommandon. Ersätt {your-unique-name} med en sträng som är unik för dig.
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}
Notera utdata.
Distribuera mallen genom att köra följande kommandon. Ersätt {your-unique-name} med en sträng som är unik för dig.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Notera utdata.
Kontrollera distributionen av utdata
I Azure-portalen går du till din addOutputs-distribution. Du kan även hitta dina utdata där.