Oefening: parameters en uitvoer toevoegen aan uw Azure Resource Manager-sjabloon
In deze oefening voegt u een parameter toe om de naam van het Azure-opslagaccount te definiƫren tijdens de implementatie. Vervolgens voegt u een parameter toe om te definiƫren welke opslagaccount-SKU's zijn toegestaan en definieert u welke moet worden gebruikt voor deze implementatie. U voegt ook nuttige informatie toe aan de Arm-sjabloon (Azure Resource Manager) door een uitvoer toe te voegen die u later in het implementatieproces kunt gebruiken.
Parameters voor de ARM-sjabloon maken
Hiermee maakt u uw ARM-sjabloon flexibeler door parameters toe te voegen die tijdens runtime kunnen worden ingesteld. Maak een parameter voor de waarde storageName
.
Plaats in het azuredeploy.json-bestand in Visual Studio Code de cursor in de accolades in het parameterkenmerk . Dit ziet er als volgt uit:
"parameters":{},
Selecteer Invoeren en voer par in. U ziet een lijst met verwante fragmenten. Kies nieuwe parameter, waarmee een algemene parameter wordt toegevoegd aan de sjabloon. Dit voorbeeld ziet er als volgt uit:
"parameters": { "parameter1": { "type": "string", "metadata": { "description": "description" } } },
Wijzig de parameter van parameter1 in storageName en laat het type ongewijzigd als een tekenreeks. Voeg voor minLength de waarde 3 toe en voor maxLength de waarde 24. Voeg een beschrijvingswaarde toe van De naam van de Azure-opslagresource.
Het parameterblok moet er nu uitzien als in dit voorbeeld:
"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },
Gebruik de nieuwe parameter in het blok
resources
voor de waardenname
endisplayName
. Het hele bestand ziet er als volgt uit:{ "$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": {} }
Sla het bestand op.
De geparameteriseerde ARM-sjabloon implementeren
Hier wijzigt u de naam van de implementatie om beter te laten zien wat deze implementatie doet, en vult u een waarde in voor de nieuwe parameter.
Voer in de terminal de volgende Azure CLI-opdrachten uit. Dit fragment is dezelfde code die u eerder hebt gebruikt, maar de naam van de implementatie is gewijzigd. Vul een unieke naam in voor de parameter storageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de vorige les hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.
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}
Voer in de terminal de volgende Azure PowerShell-opdrachten uit. Dit fragment is dezelfde code die u eerder hebt gebruikt, maar de naam van de implementatie is gewijzigd. Vul een unieke naam in voor de parameter storageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de vorige les hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Uw implementatie controleren
Wanneer de implementatie is voltooid, gaat u terug naar Azure Portal in uw browser. Ga naar uw resourcegroep en kijk of er nu drie geslaagde implementaties zijn. Selecteer deze koppeling.
Zoals u ziet worden alle drie de implementaties in de lijst vermeld.
Verken de implementatie addnameparameter zoals u eerder hebt gedaan.
Een andere parameter toevoegen waarmee toegestane waarden worden beperkt
Hier gaat u parameters gebruiken om de waarden te beperken die zijn toegestaan voor een parameter.
Plaats de cursor na de afsluitende accolade voor de parameter
storageName
. Voeg een komma toe en selecteer Invoeren.Voer opnieuw par in en selecteer nieuwe parameter.
Wijzig de nieuwe algemene parameter in de volgende code:
"storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }
Hier geeft u de waarden weer die door deze parameter zijn toegestaan. Als de sjabloon wordt uitgevoerd met een waarde die niet is toegestaan, mislukt de implementatie.
Voeg een opmerking toe aan deze parameter.
ARM-sjablonen ondersteunen
//
- en/* */
-opmerkingen.Werk resources bij om de parameter
storageSKU
te gebruiken. Als u gebruikmaakt van IntelliSense in Visual Studio Code, is deze stap eenvoudiger."sku": { "name": "[parameters('storageSKU')]" }
Het hele bestand ziet er als volgt uit:
{ "$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": {} }
Sla het bestand op.
De ARM-sjabloon implementeren
Hier voert u de implementatie succesvol uit met behulp van een storageSKU
-parameter die op de lijst met toegestane waarden staat. Vervolgens probeert u de sjabloon te implementeren met behulp van een storageSKU
parameter die zich niet in de lijst met toegestane waarden bevindt. De tweede implementatie mislukt zoals verwacht.
Implementeer de sjabloon door de volgende opdrachten uit te voeren. Vul een unieke naam in voor de parameter
storageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.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}
Wacht tot de implementatie is voltooid. Deze implementatie lukt zoals verwacht. Uw lijst met toegestane waarden voorkomt dat de gebruikers van uw sjabloon parameterwaarden doorgeven die niet werken voor de resource. Laten we eens kijken wat er gebeurt als u een ongeldige SKU opgeeft.
Voer de volgende opdrachten uit om de sjabloon te implementeren met een parameter die niet is toegestaan. Hier hebt u de parameter
storageSKU
gewijzigd in Basic. Vul een unieke naam in voor de parameterstorageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.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}
Deze implementatie mislukt. Let op de fout.
Implementeer de sjabloon door de volgende opdrachten uit te voeren. Vul een unieke naam in voor de parameter
storageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRS
Wacht tot de implementatie is voltooid. Deze implementatie lukt zoals verwacht. Uw lijst met toegestane waarden voorkomt dat de gebruikers van uw sjabloon parameterwaarden doorgeven die niet werken voor de resource. Laten we eens kijken wat er gebeurt als u een ongeldige SKU opgeeft.
Voer de volgende opdrachten uit om de sjabloon te implementeren met een parameter die niet is toegestaan. Hier hebt u de parameter
storageSKU
gewijzigd in Basic. Vul een unieke naam in voor de parameterstorageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Basic
Deze implementatie mislukt. Let op de fout.
Uitvoer toevoegen aan de ARM-sjabloon
Hier gaat u waarden toevoegen aan de sectie outputs
van de ARM-sjabloon waarmee de eindpunten voor de opslagaccountresource als uitvoer worden geretourneerd.
Plaats in het azuredeploy.json-bestand in Visual Studio Code de cursor in de accolades in het uitvoerkenmerk
"outputs":{},
.Druk op Enter en vervolgens op Enter. U krijgt een lijst met gerelateerde fragmenten. Selecteer nieuwe uitvoer. Er wordt een algemene uitvoer toegevoegd aan de sjabloon die er als volgt uitziet:
"outputs": { "output1": { "type": "string", "value": "value" }
Wijzig 'output1' in 'storageEndpoint' en wijzig vervolgens de waarde van
type
' object'. Wijzig de waarde vanvalue
'[reference(parameters('storageName')).primaryEndpoints]'. Deze expressie is de expressie die we in de vorige les hebben beschreven waarmee de eindpuntgegevens worden opgehaald. Omdat we het object hebben opgegeven als het type, wordt het object in JSON-indeling geretourneerd."outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" }
Sla het bestand op.
De ARM-sjabloon met uitvoer implementeren
Hier implementeert u de sjabloon en ziet u de uitvoer in de vorm van eindpunten in JSON-indeling. U moet een unieke naam invullen voor de parameter storageName
. Deze naam moet uniek zijn binnen Azure. U kunt de unieke naam gebruiken die u in de laatste sectie hebt gemaakt. In dat geval werkt Azure de resource bij in plaats van een nieuwe resource te maken.
Implementeer de sjabloon door de volgende opdrachten uit te voeren. Zorg ervoor dat u {uw-unieke naam} vervangt door een tekenreeks die uniek is voor u.
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}
Let op de uitvoer.
Implementeer de sjabloon door de volgende opdrachten uit te voeren. Zorg ervoor dat u {uw-unieke naam} vervangt door een tekenreeks die uniek is voor u.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRS
Let op de uitvoer.
Controleer uw uitvoerimplementatie
Ga in Azure Portal naar uw addOutputs-implementatie. Hier vindt u ook uw uitvoer.