Tutorial: Criar vários instâncias de recurso com os modelos do ARM

Saiba como iterar no seu modelo do ARM (modelo do Azure Resource Manager) para criar várias instâncias de um recurso do Azure. Neste tutorial, você modificará um modelo para criar três instâncias de conta de armazenamento.

Diagrama mostrando o Azure Resource Manager criando várias instâncias.

Este tutorial cobre as seguintes tarefas:

  • Abrir um modelo de Início Rápido
  • Editar o modelo
  • Implantar o modelo

Se você não tiver uma assinatura do Azure, crie uma conta gratuita antes de começar.

Para acessar um módulo do Learn que aborda a cópia de recursos, confira Gerenciar implantações de nuvem complexas usando recursos avançados do modelo do ARM.

Pré-requisitos

Para concluir este artigo, você precisa do seguinte:

Abrir um modelo de Início Rápido

Modelos de Início Rápido do Azure é um repositório de modelos do ARM. Em vez de criar um modelo do zero, você pode encontrar um exemplo de modelo e personalizá-lo. O modelo usado neste início rápido é chamado Criar uma conta de armazenamento padrão. O modelo define um recurso da conta de Armazenamento do Azure.

  1. No Visual Studio Code, escolha Arquivo>Abrir Arquivo.

  2. Em Nome do arquivo, cole a seguinte URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    
  3. Escolha Abrir para abrir o arquivo.

  4. Há um recurso Microsoft.Storage/storageAccounts definido no modelo. Comparar o modelo para a referência de modelo. É útil ter algumas noções básicas do modelo antes de personalizá-lo.

  5. Escolha Arquivo>Salvar como para salvar o arquivo como azuredeploy.json em seu computador local.

Editar o modelo

O modelo existente cria uma conta de armazenamento. Você personaliza o modelo para criar três contas de armazenamento.

No Visual Studio Code, faça as quatro alterações a seguir:

Captura de tela do Visual Studio Code com o Azure Resource Manager criando várias instâncias.

  1. Adicione um elemento copy à definição de recurso de conta de armazenamento. No elemento copy, você especifica o número de iterações e uma variável para esse loop. O valor da contagem deve ser um número inteiro positivo e não pode exceder 800.

    "copy": {
      "name": "storageCopy",
      "count": 3
    },
    
  2. A função copyIndex() retorna a iteração atual no loop. Você pode usar o índice como o prefixo do nome. copyIndex()é baseado em zero. Para deslocar o valor do índice, você pode passar um valor na função copyIndex(). Por exemplo, copyIndex(1).

    "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
    
    
    
  3. Excluir a definição do parâmetro storageAccountName, pois ela não é mais usada.

  4. Exclua o elemento outputs. Ele não é mais necessário.

  5. Exclua o elemento metadata.

O modelo concluído se parece com:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storageAccountType": {
      "type": "string",
      "defaultValue": "Standard_LRS",
      "allowedValues": [
        "Premium_LRS",
        "Premium_ZRS",
        "Standard_GRS",
        "Standard_GZRS",
        "Standard_LRS",
        "Standard_RAGRS",
        "Standard_RAGZRS",
        "Standard_ZRS"
      ],
      "metadata": {
        "description": "Storage Account type"
      }
    },
    "location": {
      "type": "string",
      "defaultValue": "[resourceGroup().location]",
      "metadata": {
        "description": "Location for the storage account."
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-06-01",
      "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
      "location": "[parameters('location')]",
      "sku": {
        "name": "[parameters('storageAccountType')]"
      },
      "kind": "StorageV2",
      "copy": {
        "name": "storageCopy",
        "count": 3
      },
      "properties": {}
    }
  ]
}

Salve as alterações.

Para obter mais informações de como criar várias instâncias, confira Iteração de recursos em modelos do ARM

Implantar o modelo

  1. Entrar no Azure Cloud Shell

  2. Escolha seu ambiente preferencial selecionando PowerShell ou Bash (para a CLI) no canto superior esquerdo. Ao alternar, é necessário reiniciar o shell.

    Carregar arquivo do Cloud Shell no portal do Azure

  3. Escolha Carregar/fazer o download dos arquivos e, em seguida, escolha Carregar. Consulte a captura de tela anterior. Selecione o arquivo que você salvou na seção anterior. Depois de carregar o arquivo, use os comandos ls e cat para verificar se o arquivo foi carregado com êxito.

  4. No Cloud Shell, execute os comandos a seguir. Selecione a guia para mostrar o código do PowerShell ou o código da CLI.

    echo "Enter a project name that is used to generate resource group name:" &&
    read projectName &&
    echo "Enter the location (i.e. centralus):" &&
    read location &&
    resourceGroupName="${projectName}rg" &&
    az group create --name $resourceGroupName --location "$location" &&
    az deployment group create --resource-group $resourceGroupName --template-file "$HOME/azuredeploy.json"
    

Após uma implantação de modelo bem-sucedida, você pode exibir as três contas de armazenamento criadas no grupo de recursos especificado. Compare os nomes de conta de armazenamento com a definição de nome no modelo.

echo "Enter a project name that is used to generate resource group name:" &&
read projectName &&
resourceGroupName="${projectName}rg" &&
az storage account list --resource-group $resourceGroupName &&
echo "Press [ENTER] to continue ..."

Limpar os recursos

Quando os recursos do Azure já não forem necessários, limpe os recursos implantados excluindo o grupo de recursos.

  1. No portal do Azure, escolha Grupos de recursos do menu à esquerda.
  2. No campo Filtrar por nome, insira o nome do grupo de recursos.
  3. Selecione o nome do grupo de recursos. Você deverá ver um total de três recursos no grupo de recursos.
  4. Escolha Excluir grupo de recursos no menu superior.

Próximas etapas

Neste tutorial, você aprendeu a criar várias instâncias da conta de armazenamento. No próximo tutorial, você desenvolverá um modelo com vários recursos e vários tipos de recursos. Alguns dos recursos têm recursos dependentes.