Exercício – Adicionar parâmetros e saídas ao seu modelo do Azure Resource Manager

Concluído

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.

  1. 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.

  2. Use o novo parâmetro no bloco de resources nos valores name e displayName. 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": {}
    }
    
  3. 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

  1. 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.

  2. 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.

  1. Adicione um novo parâmetro nomeado storageSKU à parameters seçã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 /* */.

  2. Atualize os recursos para usar o storageSKU parâ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": {}
    }
    
  3. 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.

  1. 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.

  2. Execute os comandos a seguir para implantar o modelo com um parâmetro que não é permitido. Aqui, você alterou o storageSKU parâmetro para Basic. 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=Basic storageName={your-unique-name}
    

    Essa implantação falha. Observe o erro.

    Captura de tela da janela Terminal mostrando o erro de validação de implantação.

  1. 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_GRS
    

    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.

  2. Execute os comandos a seguir para implantar o modelo com um parâmetro que não é permitido. Aqui, você alterou o storageSKU parâmetro para Basic. 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 Basic
    

    Essa implantação falha. Observe o erro.

    Captura de tela da janela Terminal mostrando o erro de validação de implantação.

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.

  1. 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]"
      }
    }
    
  2. 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.

  1. 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.

    Captura de tela da janela Terminal mostrando a saída dos pontos de extremidade primários como JSON.

  1. 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_LRS
    

    Observe a saída.

    Captura de tela da janela Terminal mostrando a saída dos pontos de extremidade primários como JSON.

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á.

Captura de tela do portal do Azure mostrando a seleção de saída no menu à esquerda.