Partilhar via


Tutorial: Adicionar parâmetros ao seu modelo ARM

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

Pré-requisitos

Recomendamos que você conclua o tutorial sobre recursos, mas 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 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. Você só pode usar esse modelo para implantar a mesma conta de armazenamento sempre. 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 é todo em letras minúsculas ou números e tem um limite de 24 caracteres.

Copie o arquivo inteiro e substitua seu 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
      }
    }
  ]
}

Implementar o 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 deployment. Para o nome da conta de armazenamento, forneça o mesmo nome que você usou no tutorial anterior.

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

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

Compreender as atualizações de recursos

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

Se o recurso já existir e não houver alteração nas propriedades, não há necessidade de outras 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 adaptados para um ambiente específico. Você pode passar valores diferentes, por exemplo, dependendo se está a implantar num ambiente de desenvolvimento, teste ou produção.

O modelo anterior sempre implanta uma conta de Standard_LRS padrão de armazenamento com redundância local (LRS). Você pode querer a flexibilidade de implantar diferentes unidades de manutenção de estoque (SKUs), 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 sobre o 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. Utilize este valor quando a implementaçã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 forneçam SKUs que funcionem.

Reimplantar modelo

Está pronto para desdobrar novamente. Como a SKU padrão está definida 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 a ser criados. Use o comando debug para obter mais informações para depuração.

Para ver a flexibilidade do seu modelo, vamos implantá-lo novamente. Desta vez, defina o parâmetro SKU como Standard_GRS padrão de armazenamento com redundância geográfica (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

Finalmente, vamos executar mais um teste e ver o que acontece quando se passa um SKU que não é um dos valores permitidos. Neste caso, testamos o cenário em que o utilizador do modelo pensa que 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 fornece os valores permitidos. O processador ARM localiza o erro antes do início da implantação.

Limpeza de recursos

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

Se estiver a parar agora, pode ser conveniente 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 para qualquer campo ... .
  3. Marque a caixa ao lado de myResourceGroup e selecione myResourceGroup ou o nome do seu grupo de recursos.
  4. Selecione Excluir grupo de recursos no menu superior.

Próximos passos

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