Exercício – Adicionar parâmetros e saídas ao seu modelo do Azure Resource Manager
Neste exercício, vai adicionar um parâmetro para definir o nome de conta de armazenamento do Azure durante a implementação. Em seguida, você adiciona um parâmetro para definir quais SKUs de conta de armazenamento são permitidos e define qual usar para essa implantação. Você também adiciona utilidade ao modelo do Azure Resource Manager (modelo ARM) adicionando uma saída que pode ser usada posteriormente no processo de implantação.
Criar parâmetros para o modelo do Resource Manager
Aqui, torna o seu modelo do Resource Manager mais flexível ao adicionar parâmetros que poderão ser definidos no runtime. Crie um parâmetro para o valor storageName.
No arquivo azuredeploy.json no Visual Studio Code, atualize
"parameters":{},para que fique como:"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.
Utilize o novo parâmetro no bloco
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": {} }Guarde o ficheiro.
Implementar o modelo do Resource Manager parametrizado
Aqui, pode alterar o nome da implementação para refletir melhor o que esta implementação faz e preencher um valor para o novo parâmetro.
Execute os seguintes comandos da CLI do Azure 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 hífenes. Pode reutilizar o nome único que criou 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 seguintes comandos do Azure PowerShell no terminal. Esse script é idêntico ao usado 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 hífenes. Pode reutilizar o nome único que criou 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 a implementação
Quando a implantação terminar, volte para o portal do Azure em seu navegador. Vá para o seu grupo de recursos e veja que agora há 3 implantações bem-sucedidas. Selecione esta ligação.
Repare as três implementações se encontram na lista.
Explore a implantação addnameparameter como fez anteriormente.
Adicionar outro parâmetro que limite os valores permitidos
Aqui, vai utilizar parâmetros para limitar os valores permitidos num 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 ARM suportam comentários
//e/* */.Atualize os recursos para usar o
storageSKUparâmetro. Se você aproveitar o IntelliSense no Visual Studio Code, essa etapa será 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": {} }Guarde o ficheiro.
Implementar o modelo do Resource Manager
Aqui, pode implementar com sucesso através de um parâmetro storageSKU que está na lista permitida. Em seguida, tente implantar o modelo usando um storageSKU parâmetro que não esteja na lista de permissões. A segunda implantação falha conforme o esperado.
Implante o modelo executando os seguintes comandos. Preencha o parâmetro
storageNamecom um nome exclusivo. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hífenes. Pode reutilizar o nome único que criou 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}Aguarde pela conclusão da implementação. Esta implementação será concluída com êxito conforme esperado. Sua lista de valores permitidos impede que os usuários do modelo passem valores de parâmetro que não funcionam para o recurso. Vamos ver o que acontece quando fornece um SKU inválido.
Execute os seguintes comandos para implementar o modelo com um parâmetro que não é permitido. Aqui, você alterou o
storageSKUparâmetro para Basic. Preencha o parâmetrostorageNamecom um nome exclusivo. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hífenes. Pode reutilizar o nome único que criou 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}Esta implementação irá falhar. Repare no erro.
Implante o modelo executando os seguintes comandos. Preencha o parâmetro
storageNamecom um nome exclusivo. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hífenes. Pode reutilizar o nome único que criou 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_GRSAguarde pela conclusão da implementação. Esta implementação será concluída com êxito conforme esperado. Sua lista de valores permitidos impede que os usuários do modelo passem valores de parâmetro que não funcionam para o recurso. Vamos ver o que acontece quando fornece um SKU inválido.
Execute os seguintes comandos para implementar o modelo com um parâmetro que não é permitido. Aqui, você alterou o
storageSKUparâmetro para Basic. Preencha o parâmetrostorageNamecom um nome exclusivo. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hífenes. Pode reutilizar o nome único que criou 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 BasicEsta implementação irá falhar. Repare no erro.
Adicionar saída ao modelo do Resource Manager
Aqui, pode adicionar à secção outputs do modelo ARM da saída os pontos finais do recurso da 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]" } }Guarde o ficheiro.
Implementar o modelo ARM com uma saída
Aqui, implementará o modelo e verá a saída dos pontos finais como JSON. Tem de preencher o parâmetro storageName com um nome exclusivo. Ele deve ser globalmente exclusivo no Azure, conter de 3 a 24 caracteres e incluir apenas letras minúsculas, números e hífenes. Pode reutilizar o nome único que criou 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. Certifique-se de substituir {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}Repare na saída.
Implante o modelo executando os seguintes comandos. Certifique-se de substituir {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_LRSRepare na saída.
Verificar a implementação da saída
No portal do Azure, acesse a sua implantação addOutputs. Também pode localizar lá a sua saída.