Esercizio - Aggiungere parametri e output al modello di Azure Resource Manager
In questo esercizio viene aggiunto un parametro per definire il nome dell'account di archiviazione di Azure durante la distribuzione. Viene quindi aggiunto un parametro per definire lo SKU dell'account di archiviazione autorizzato e quale usare per la distribuzione. È anche possibile aumentare l'utilità del modello di Azure Resource Manager (modello di ARM) aggiungendo un output utilizzabile in un secondo momento nel processo di distribuzione.
Creare parametri per il modello di Resource Manager
In questo esempio il modello di Resource Manager viene reso più flessibile aggiungendo parametri che possono essere impostati in fase di esecuzione. Creare un parametro per il valore storageName.
Nel file azuredeploy.json in Visual Studio Code aggiornare
"parameters":{},, in modo che sia simile al seguente:"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },Per formattare correttamente il file JSON, premere ALT+MAIUSC+F.
Usare il nuovo parametro nel blocco
resourcesnei valorinameedisplayName. L'intero file è simile a questo esempio di codice:{ "$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": "2025-01-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "Standard_LRS" } } ], "outputs": {} }Salvare il file.
Distribuire il modello di Resource Manager con parametri
In questo esempio si modifica il nome della distribuzione in modo da rispecchiare meglio l'obiettivo della distribuzione e si immette un valore per il nuovo parametro.
Eseguire i comandi dell'interfaccia della riga di comando di Azure seguenti nel terminale. Questo script è identico a quello usato in precedenza, ad eccezione del nome della distribuzione modificato. Immettere un valore univoco per il storageName parametro . Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.
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}
Eseguire i comandi di Azure PowerShell seguenti nel terminale. Questo script è identico a quello usato in precedenza, ad eccezione del nome della distribuzione modificato. Immettere un valore univoco per il storageName parametro . Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Controllare la distribuzione
Al termine della distribuzione, tornare al portale di Azure nel browser. Passare al gruppo di risorse e osservare che ora sono presenti 3 distribuzioni completate. Selezionare il collegamento.
Si noti che tutte e tre le distribuzioni sono presenti nell'elenco.
Esplorare la distribuzione addnameparameter come è stato fatto in precedenza.
Aggiungere un altro parametro per limitare i valori consentiti
In questo esempio si usano i parametri per limitare i valori consentiti per un parametro.
Aggiungere un nuovo parametro denominato
storageSKUallaparameterssezione del file azuredeploy.json .// This is the allowed values for an Azure storage account "storageSKU": { "type": "string", "defaultValue": "Standard_LRS", "allowedValues": [ "Standard_LRS", "Standard_GRS", "Standard_RAGRS", "Standard_ZRS", "Premium_LRS", "Premium_ZRS", "Standard_GZRS", "Standard_RAGZRS" ] }La prima riga è un commento. I modelli di Azure Resource Manager supportano i commenti
//e/* */.Aggiornare resources in modo da usare il parametro
storageSKU. Se si sfrutta IntelliSense in Visual Studio Code, questo passaggio viene semplificato."sku": { "name": "[parameters('storageSKU')]" }L'intero file è simile a questo esempio di codice:
{ "$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": "2025-01-01", "name": "[parameters('storageName')]", "tags": { "displayName": "[parameters('storageName')]" }, "location": "[resourceGroup().location]", "kind": "StorageV2", "sku": { "name": "[parameters('storageSKU')]" } } ], "outputs": {} }Salvare il file.
Distribuire il modello di Resource Manager
In questo esempio viene eseguita la distribuzione usando un parametro storageSKU presente nell'elenco dei parametri consentiti. Successivamente, si cerca di distribuire il modello usando un parametro storageSKU non incluso nell'elenco dei parametri consentiti. La seconda distribuzione ha esito negativo come previsto.
Distribuire il modello eseguendo i comandi seguenti. Specificare un nome univoco per il parametro
storageName. Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.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}Lasciare che la distribuzione venga completata. La distribuzione ha esito positivo come previsto. L'elenco di valori consentiti impedisce agli utenti del modello di passare valori dei parametri che non possono essere utilizzati per la risorsa. Si vedrà ora cosa accade quando si specifica uno SKU non valido.
Eseguire i comandi seguenti per distribuire il modello con un parametro non consentito. In questo esempio il parametro
storageSKUè stato modificato in Basic. Specificare un nome univoco per il parametrostorageName. Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.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}La distribuzione ha esito negativo. Si noti l'errore.
Distribuire il modello eseguendo i comandi seguenti. Specificare un nome univoco per il parametro
storageName. Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRSLasciare che la distribuzione venga completata. La distribuzione ha esito positivo come previsto. L'elenco di valori consentiti impedisce agli utenti del modello di passare valori dei parametri che non possono essere utilizzati per la risorsa. Si vedrà ora cosa accade quando si specifica uno SKU non valido.
Eseguire i comandi seguenti per distribuire il modello con un parametro non consentito. In questo esempio il parametro
storageSKUè stato modificato in Basic. Specificare un nome univoco per il parametrostorageName. Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU BasicLa distribuzione ha esito negativo. Si noti l'errore.
Aggiungere l'output al modello di Resource Manager
In questo esempio viene aggiunta la sezione outputs del modello di Azure Resource Manager in modo che vengano restituiti gli endpoint per la risorsa dell'account di archiviazione.
Nel file azuredeploy.json in Visual Studio Code aggiornare
"outputs":{},in modo che sia simile al seguente:"outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" } }Salvare il file.
Distribuire il modello di Resource Manager con un output
In questo esempio si distribuisce il modello e si visualizza l'output degli endpoint come JSON. È necessario specificare un nome univoco per il parametro storageName. Deve essere univoco a livello globale in Azure, contenere da 3 a 24 caratteri e includere solo lettere minuscole, numeri e trattini. È possibile riutilizzare il nome univoco creato nell'unità precedente; In caso affermativo, Azure aggiornerà la risorsa esistente anziché crearne una nuova.
Distribuire il modello eseguendo i comandi seguenti. Assicurarsi di sostituire {your-unique-name} con una stringa univoca.
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}Si noti l'output.
Distribuire il modello eseguendo i comandi seguenti. Assicurarsi di sostituire {your-unique-name} con una stringa univoca.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRSSi noti l'output.
Controllare la distribuzione dell'output
Nel portale di Azure passare alla distribuzione addOutputs. È possibile trovare l'output anche qui.