Compartilhar via


Tutorial: Adicionar parâmetros ao modelo do ARM

No tutorial anterior, você aprendeu a adicionar uma conta de armazenamento do Azure ao modelo e implantá-la. Neste tutorial, você aprenderá a melhorar o modelo do ARM (Azure Resource Manager) adicionando parâmetros. Esta instrução leva 14 minutos para ser concluída.

Pré-requisitos

Recomendamos que você conclua o tutorial sobre recursos, mas isso não é necessário.

Você precisa ter o Visual Studio Code e o Azure PowerShell ou a CLI do Azure. Para obter mais informações, consulte as ferramentas de modelo.

Modelo de revisão

No final do tutorial anterior, seu modelo tem o seguinte arquivo JSON:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Você pode notar que há um problema com esse modelo. O nome da conta de armazenamento é codificado em código. Você só pode usar esse modelo para implantar a mesma conta de armazenamento todas as vezes. Para implantar uma conta de armazenamento com um nome diferente, você precisa criar um novo modelo, o que obviamente não é uma maneira prática de automatizar suas implantações.

Tornar o modelo reutilizável

Para tornar seu modelo reutilizável, vamos adicionar um parâmetro que você pode usar para passar um nome de conta de armazenamento. O arquivo JSON no exemplo a seguir mostra as alterações em seu modelo. O storageName parâmetro é identificado como uma cadeia de caracteres. O nome da conta de armazenamento é todas letras minúsculas ou números e tem um limite de 24 caracteres.

Copie o arquivo inteiro e substitua o modelo pelo conteúdo:

{
  "$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
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Implantar modelo

Vamos implantar o modelo. O exemplo a seguir implanta o modelo com a CLI do Azure ou o Azure PowerShell. Observe que você fornece o nome da conta de armazenamento como um dos valores no comando de implantação. Para o nome da conta de armazenamento, forneça o mesmo nome que você usou no tutorial anterior.

Se você ainda não criou o grupo de recursos, consulte Criar grupo de recursos. O exemplo pressupõe que você defina a templateFile variável para o caminho do arquivo de modelo, conforme mostrado no primeiro tutorial.

New-AzResourceGroupDeployment `
  -Name addnameparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Entender as atualizações de recursos

Depois de implantar uma conta de armazenamento com o mesmo nome usado anteriormente, você poderá se perguntar como a reimplantação afeta o recurso.

Se o recurso já existir e não houver nenhuma alteração nas propriedades, não haverá necessidade de mais ações. Se o recurso existir e uma propriedade for alterada, ele será atualizado. Se o recurso não existir, ele será criado.

Essa maneira de lidar com atualizações significa que seu modelo pode incluir todos os recursos necessários para uma solução do Azure. Você pode reimplantar o modelo com segurança e saber que os recursos mudam ou são criados somente quando necessário. Se você adicionar arquivos à sua conta de armazenamento, por exemplo, poderá reimplantar a conta de armazenamento sem perder os arquivos.

Personalizar por ambiente

Os parâmetros permitem personalizar a implantação fornecendo valores personalizados para um ambiente específico. É possível passar valores diferentes, por exemplo, com base em se está implantando em um ambiente de desenvolvimento, teste ou produção.

O modelo anterior sempre implanta uma conta de armazenamento com redundância local padrão (Standard_LRS). Talvez você queira a flexibilidade para implantar SKUs (unidades de manutenção de estoque) diferentes, dependendo do ambiente. O exemplo a seguir mostra as alterações para adicionar um parâmetro para SKU. Copie o arquivo inteiro e cole-o em seu modelo:

{
  "$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
    },
    "storageSKU": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Standard_LRS",
        "Standard_GRS",
        "Standard_RAGRS",
        "Standard_ZRS",
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GZRS",
        "Standard_RAGZRS"
      ]
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-06-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

O storageSKU parâmetro tem um valor padrão. Use esse valor quando a implantação não o especificar. Ele também tem uma lista de valores permitidos. Esses valores correspondem aos valores necessários para criar uma conta de armazenamento. Você quer que os usuários do modelo passem as SKUs que funcionam.

Reimplantar modelo

Você está pronto para implantar novamente. Como o SKU padrão está definido como Standard_LRS, você já forneceu um valor de parâmetro.

New-AzResourceGroupDeployment `
  -Name addskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}"

Observação

Se a implantação falhar, use a opção verbose para obter informações sobre os recursos que estão sendo criados. Use a opção debug para obter mais informações de depuração.

Para ver a flexibilidade do seu template, vamos implantá-lo novamente. Desta vez, defina o parâmetro SKU como grs (armazenamento com redundância geográfica) padrão Standard_GRS. Você pode passar um novo nome para criar uma conta de armazenamento diferente ou usar o mesmo nome para atualizar sua conta de armazenamento existente. Ambas as opções funcionam.

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

Por fim, vamos executar mais um teste e ver o que acontece quando você passa um SKU que não é um dos valores permitidos. Nesse caso, testamos o cenário em que o usuário do modelo considera básico é um dos SKUs.

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

O comando falha imediatamente com uma mensagem de erro que indica os valores permitidos. O processador ARM localiza o erro antes do início da implantação.

Limpar os recursos

Se você estiver passando para o próximo tutorial, não precisará excluir o grupo de recursos.

Se estiver parando agora, o ideal será limpar os recursos implantados excluindo o grupo de recursos.

  1. No portal do Azure, selecione Grupo de recursos no menu à esquerda.
  2. Digite o nome do grupo de recursos no campo de texto Filtrar em qualquer campo....
  3. Marque a caixa ao lado de myResourceGroup e selecione myResourceGroup ou o nome do grupo de recursos.
  4. Escolha Excluir grupo de recursos no menu superior.

Próximas etapas

Você melhorou o modelo criado no primeiro tutorial adicionando parâmetros. No próximo tutorial, você aprenderá sobre as funções de modelo.