Compartilhar via


Tutorial: Adicionar funções de modelo ao modelo do ARM

Neste tutorial, você aprenderá a adicionar funções de modelo ao modelo do ARM (modelo do Azure Resource Manager). Você usa essas funções para construir valores dinamicamente. Além dessas funções de modelo fornecidas pelo sistema, você também pode criar funções definidas pelo usuário. Este tutorial leva 7 minutos para ser concluído.

Pré-requisitos

Recomendamos que você conclua o tutorial sobre parâmetros, mas isso não é obrigatório.

É necessário ter o Visual Studio Code instalado e funcionando com a extensão das Ferramentas do Azure Resource Manager e o 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 tinha o seguinte arquivo JSON:

{
  "$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
      }
    }
  ]
}

Suponha que você tenha codificado o local da conta de armazenamento do Azure no eastus, mas precisa implantá-lo em outra região. Você precisa adicionar um parâmetro para adicionar flexibilidade ao seu modelo e permitir que ele tenha um local diferente.

Usar uma função

Se você concluiu o tutorial de parâmetros, usou uma função. Quando adicionou "[parameters('storageName')]" , você usou a função parameters. Os colchetes indicam que a sintaxe dentro dos colchetes é uma expressão de modelo. O Resource Manager resolve a sintaxe, em vez de tratá-la como um valor literal.

As funções adicionam flexibilidade ao modelo ao obter valores dinamicamente durante a implantação. Neste tutorial, você usa uma função para obter o local de implantação do grupo de recursos.

O exemplo a seguir realça as alterações para adicionar um parâmetro chamado location. O valor padrão do parâmetro chama a função resourceGroup. Essa função retorna um objeto com informações sobre o grupo de recursos implantado. Uma das propriedades do objeto é uma propriedade de localização. Ao usar o valor padrão, a conta de armazenamento e o grupo de recursos têm o mesmo local. Os recursos dentro de um grupo têm locais diferentes.

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

Implantar modelo

Nos tutoriais anteriores, você criou uma conta de armazenamento no Leste dos EUA, mas o grupo de recursos é criado no EUA Central. Para este tutorial, você cria uma conta de armazenamento na mesma região que o grupo de recursos. Use o valor padrão para localização, para que você não precise fornecer esse valor de parâmetro. É preciso fornecer um novo nome para a conta de armazenamento, porque está criando uma conta de armazenamento em uma localização diferente. Use store2, por exemplo, como o prefixo em vez de store1.

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

New-AzResourceGroupDeployment `
  -Name addlocationparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{new-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.

Verificar implantação

Você pode verificar a implantação explorando o grupo de recursos no portal do Azure.

  1. Entre no portal do Azure.
  2. No menu à esquerda, selecione Grupos de recursos.
  3. Marque a caixa à esquerda de myResourceGroup e selecione myResourceGroup.
  4. Selecione o grupo de recursos que você criou. O nome padrão é myResourceGroup.
  5. Observe que sua conta de armazenamento implantada e seu grupo de recursos têm o mesmo local.

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, talvez você queira excluir o grupo de recursos.

  1. No portal do Azure, selecione Grupos de recursos no 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

Neste tutorial, você usa uma função para definir o valor padrão para um parâmetro. Nesta série de tutoriais, você continua a usar funções. Ao final da série, você adiciona funções a cada seção do modelo.