Tutorial: Criar várias instâncias de recursos com modelos do ARM

Saiba como iterar no modelo do Azure Resource Manager (modelo arm) para criar várias instâncias de um recurso do Azure. Neste tutorial, modifica um modelo para criar três instâncias de contas de armazenamento.

Diagrama a mostrar o Azure Resource Manager a criar várias instâncias.

Este tutorial abrange as seguintes tarefas:

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

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

Para obter um módulo do Learn que abrange a cópia de recursos, veja Gerir implementações na cloud complexas com funcionalidades avançadas de modelo do ARM.

Pré-requisitos

Para concluir este artigo, precisa de:

Abrir um modelo de Início Rápido

Os Modelos de Início Rápido do Azure são um repositório para modelos do ARM. Em vez de criar um modelo do zero, pode encontrar um modelo de exemplo e personalizá-lo. O modelo utilizado neste início rápido chama-se Criar uma conta de armazenamento padrão. O modelo define um recurso de conta de Armazenamento do Azure.

  1. No Visual Studio Code, selecione Ficheiro>Aberto Ficheiro.

  2. em Nome de ficheiro, cole o seguinte URL:

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

  4. Existe um Microsoft.Storage/storageAccounts recurso definido no modelo. Compare o modelo à referência do modelo. É útil obter alguma compreensão básica do modelo antes de o personalizar.

  5. Selecione Guardar Ficheiro>Como para guardar o ficheiro como azuredeploy.json no seu computador local.

Editar o modelo

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

No Visual Studio Code, efetue as seguintes quatro alterações:

Captura de ecrã do Visual Studio Code com o Azure Resource Manager a criar várias instâncias.

  1. Adicione um elemento copy à definição do recurso de conta de armazenamento. copy No elemento, especifique o número de iterações e uma variável para este ciclo. O valor tem de ser um número inteiro positivo e não pode ser mais de 800.

    "copy": {
      "name": "storageCopy",
      "count": 3
    },
    
  2. A função copyIndex() devolve a iteração atual no ciclo. Utilize o índice como o prefixo do nome. copyIndex() é baseado em zero. Para compensar o valor do índice, pode transmitir um valor na função copyIndex() . Por exemplo, copyIndex(1).

    "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
    
    
    
  3. Elimine a storageAccountName definição do parâmetro, uma vez que já não é utilizada.

  4. Elimine o outputs elemento. Já não é necessário.

  5. Elimine o metadata elemento.

O modelo completo assemelha-se a:

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

Guarde as alterações.

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

Implementar o modelo

  1. Iniciar sessão na Cloud Shell do Azure

  2. Selecione o seu ambiente preferido ao selecionar PowerShell ou Bash (para CLI) no canto superior esquerdo. É necessário reiniciar o Shell quando mudar.

    portal do Azure Cloud Shell carregar ficheiro

  3. Selecione Carregar/transferir ficheiros e, em seguida, selecione Carregar. Veja a captura de ecrã anterior. Selecione o ficheiro que guardou na secção anterior. Depois de carregar o ficheiro, pode utilizar o ls comando e o cat comando para verificar se o ficheiro foi carregado com êxito.

  4. No Cloud Shell, execute os seguintes comandos. Selecione o separador 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 implementação com êxito do modelo, pode apresentar as três contas de armazenamento criadas no grupo de recursos especificado. Compare os nomes de contas 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 recursos

Quando os recursos do Azure já não forem necessários, limpe os recursos implementados ao eliminar o grupo de recursos.

  1. No portal do Azure, selecione Grupo de recursos no menu esquerdo.
  2. Introduza o nome do grupo de recursos no campo Filtrar por nome.
  3. Selecione o nome do grupo de recursos. Verá um total de três recursos no grupo de recursos.
  4. Selecione Eliminar grupo de recursos no menu superior.

Passos seguintes

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