Compartilhar via


Tutorial: Adicionar parâmetros ao modelo do ARM

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

Pré-requisitos

Recomendamos que você conclua o tutorial sobre recursos, não sendo, porém, necessário.

É necessário ter o Visual Studio Code instalado e funcionando com a extensão das Ferramentas do Azure Resource Manager, além do Azure PowerShell ou a CLI do Azure. Para obter mais informações, confira Ferramentas de modelo.

Examinar modelo

No final do tutorial anterior, o 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": "2021-09-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Você pode notar que há um problema com este modelo. O nome da conta de armazenamento está embutido em código. Você só pode usar esse modelo para implantar a mesma conta de armazenamento a cada vez. Para implantar uma conta de armazenamento com um nome diferente, você precisa para 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, adicionaremos um parâmetro que você pode usar para passar um nome de conta de armazenamento. O arquivo JSON realçado no exemplo a seguir mostra as mudanças no modelo. O parâmetro storageName é 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": "2021-09-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 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 usado no tutorial anterior.

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

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

Compreender atualizações de recurso

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 que você precisa para uma solução do Azure. Você pode reimplantar o modelo com segurança e ter a certeza de que os recursos são alterados ou 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 determinado ambiente. É 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 LRS (armazenamento com redundância local) padrão Standard_LRS. Talvez você queira a flexibilidade de implantar SKUs (unidade de manutenção de estoque) diferentes dependendo do ambiente. O exemplo a seguir realça as alterações para adicionar um parâmetro para o SKU. Copie todo o arquivo 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": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "[parameters('storageSKU')]"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

O parâmetro storageSKU 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 o modelo

Você está pronto para implantar 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 sendo criados. Use a opção debug para obter mais informações de depuração.

Para ver a flexibilidade do modelo, vamos implantá-lo novamente. Desta vez, defina o parâmetro de 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. As duas 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 em uma 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 ao mesmo tempo com uma mensagem de erro que fornece os valores permitidos. O processador do 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 será necessário 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, escolha Grupos de recursos do menu à esquerda.
  2. Digite o nome do grupo de recursos no campo de texto Filtro para qualquer campo....
  3. Marque a caixa ao lado de myResourceGroup e selecione myResourceGroup ou o nome do seu grupo de recursos.
  4. Escolha Excluir grupo de recursos no menu superior.

Próximas etapas

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