Exercício – Adicionar parâmetros e saídas ao seu modelo do Azure Resource Manager
Neste exercício, adicione um parâmetro para definir o nome da conta de armazenamento do Azure durante a implantação. Em seguida, adicione um parâmetro para definir quais SKUs de conta de armazenamento são permitidos e define qual usar para esta implantação. Você também adiciona utilidade ao modelo do Azure Resource Manager (modelo do ARM) adicionando uma saída que você pode usar mais tarde no processo de implantação.
Criar parâmetros para o modelo do ARM
Aqui, você torna seu modelo do ARM mais flexível adicionando parâmetros que podem ser definidos no runtime. Crie um parâmetro para o valor de storageName.
No arquivo azuredeploy.json no Visual Studio Code, atualize
"parameters":{},, portanto, ele se parece com:"parameters": { "storageName": { "type": "string", "minLength": 3, "maxLength": 24, "metadata": { "description": "The name of the Azure storage resource" } } },Para formatar o arquivo JSON corretamente, pressione Alt+Shift+F.
Use o novo parâmetro no bloco de
resourcesnos valoresnameedisplayName. O arquivo inteiro se parece com este exemplo de código:{ "$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": {} }Salve o arquivo.
Implantar o modelo do ARM com parâmetros
Aqui, você altera o nome da implantação para refletir melhor o que essa implantação faz e preenche um valor para o novo parâmetro.
Execute os comandos da CLI do Azure a seguir no terminal. Esse script é idêntico ao que você usou anteriormente, exceto que o nome da implantação foi alterado. Insira um valor exclusivo para o storageName parâmetro. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.
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}
Execute os comandos do Azure PowerShell a seguir no terminal. Esse script é idêntico ao que você usou anteriormente, exceto que o nome da implantação foi alterado. Insira um valor exclusivo para o storageName parâmetro. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.
$templateFile="azuredeploy.json"
$today=Get-Date -Format "MM-dd-yyyy"
$deploymentName="addnameparameter-"+"$today"
New-AzResourceGroupDeployment `
-Name $deploymentName `
-TemplateFile $templateFile `
-storageName {your-unique-name}
Verificar sua implantação
Quando a implantação for concluída, volte ao portal do Microsoft Azure no seu navegador. Vá para o grupo de recursos e veja que agora há Três Implantações Bem-Sucedidas. Selecione esse link.
Observe que todas as três implantações estão na lista.
Explore a implantação addnameparameter, conforme feito anteriormente.
Adicione outro parâmetro que limita os valores permitidos
Use aqui parâmetros para limitar os valores permitidos para um parâmetro.
Adicione um novo parâmetro nomeado
storageSKUàparametersseção do arquivo 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" ] }A primeira linha é um comentário. Os modelos do ARM são compatíveis com os comentários
//e/* */.Atualize os recursos para usar o
storageSKUparâmetro. Se você usufruir do IntelliSense no Visual Studio Code, esta etapa ficará mais fácil."sku": { "name": "[parameters('storageSKU')]" }O arquivo inteiro se parece com este exemplo de código:
{ "$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": {} }Salve o arquivo.
Implantar o modelo do ARM
Aqui, implante com êxito usando um parâmetro storageSKU que está na lista de permissões. Em seguida, tente implantar o modelo usando um storageSKU parâmetro que não está na lista permitida. A segunda implantação falha conforme esperado.
Implante o modelo executando os seguintes comandos. Preencha com um nome exclusivo para o parâmetro
storageName. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.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}Permita que esta implantação seja concluída. Essa implantação é realizada com sucesso conforme o esperado. Sua lista de valores permitidos impede que os usuários do seu modelo passem valores de parâmetro que não funcionam para o recurso. Vejamos o que acontece quando você fornece uma SKU inválida.
Execute os comandos a seguir para implantar o modelo com um parâmetro que não é permitido. Aqui, você alterou o
storageSKUparâmetro para Basic. Preencha com um nome exclusivo para o parâmetrostorageName. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.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}Essa implantação falha. Observe o erro.
Implante o modelo executando os seguintes comandos. Preencha com um nome exclusivo para o parâmetro
storageName. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_GRSPermita que esta implantação seja concluída. Essa implantação é realizada com sucesso conforme o esperado. Sua lista de valores permitidos impede que os usuários do seu modelo passem valores de parâmetro que não funcionam para o recurso. Vejamos o que acontece quando você fornece uma SKU inválida.
Execute os comandos a seguir para implantar o modelo com um parâmetro que não é permitido. Aqui, você alterou o
storageSKUparâmetro para Basic. Preencha com um nome exclusivo para o parâmetrostorageName. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addSkuParameter-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU BasicEssa implantação falha. Observe o erro.
Adicionar saída ao modelo do ARM
Aqui, adicione à seção outputs do modelo do ARM a fim de gerar os pontos de extremidade para o recurso de conta de armazenamento.
No arquivo azuredeploy.json no Visual Studio Code, atualize
"outputs":{},para que ele se pareça com:"outputs": { "storageEndpoint": { "type": "object", "value": "[reference(parameters('storageName')).primaryEndpoints]" } }Salve o arquivo.
Implantar o modelo do ARM com uma saída
Aqui, você implanta o modelo e vê a saída dos pontos de extremidade como JSON. Você precisa preencher um nome exclusivo para o parâmetro storageName. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hifens. Você pode reutilizar o nome exclusivo criado na unidade anterior; se você fizer isso, o Azure atualizará o recurso existente em vez de criar um novo.
Implante o modelo executando os seguintes comandos. Substitua {seu nome exclusivo} por uma cadeia de caracteres exclusiva para você.
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}Observe a saída.
Implante o modelo executando os seguintes comandos. Substitua {seu nome exclusivo} por uma cadeia de caracteres exclusiva para você.
$today=Get-Date -Format "MM-dd-yyyy" $deploymentName="addOutputs-"+"$today" New-AzResourceGroupDeployment ` -Name $deploymentName ` -TemplateFile $templateFile ` -storageName {your-unique-name} ` -storageSKU Standard_LRSObserve a saída.
Verifique sua implantação de saída
No portal do Azure, acesse a implantação addOutputs. Você também pode encontrar a saída lá.