Share via


Självstudie: Skapa flera resursinstanser med ARM-mallar

Lär dig hur du itererar i din Azure Resource Manager-mall (ARM-mall) för att skapa flera instanser av en Azure-resurs. I den här självstudien ändrar du en mall för att skapa tre lagringskontoinstanser.

Diagram som visar Azure Resource Manager att skapa flera instanser.

Den här självstudien omfattar följande uppgifter:

  • Öppna en snabbstartsmall
  • Redigera mallen
  • Distribuera mallen

Om du inte har en Azure-prenumeration kan du skapa ett kostnadsfritt konto innan du börjar.

En Learn-modul som omfattar resurskopiering finns i Hantera komplexa molndistributioner med hjälp av avancerade ARM-mallfunktioner.

Förutsättningar

För att kunna följa stegen i den här artikeln behöver du:

Öppna en snabbstartsmall

Azure Snabbstartsmallar är en lagringsplats för ARM-mallar. I stället för att skapa en mall från början får du en exempelmall som du anpassar. Den mall som används i den här snabbstarten kallas Create a standard storage account (Skapa ett standardlagringskonto). Mallen definierar en Azure Storage-kontoresurs.

  1. I Visual Studio Code väljer du Öppna fil>.

  2. I Filnamn klistrar du in följande URL:

    https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json
    
  3. Välj Öppna för att öppna filen.

  4. Det finns en Microsoft.Storage/storageAccounts resurs som definierats i mallen. Jämför mallen med mallreferensen. Det är bra att få grundläggande förståelse för mallen innan du anpassar den.

  5. VäljSpara somfil> för att spara filen som azuredeploy.json på den lokala datorn.

Redigera mallen

Den befintliga mallen skapar ett lagringskonto. Du kan anpassa mallen för att skapa tre lagringskonton.

Från Visual Studio Code gör du följande fyra ändringar:

Skärmbild av Visual Studio Code med Azure Resource Manager att skapa flera instanser.

  1. Lägg till elementet copy i resursdefinitionen för lagringskontot. I -elementet copy anger du antalet iterationer och en variabel för den här loopen. Värdet för antal måste vara ett positivt heltal och får inte överskrida 800.

    "copy": {
      "name": "storageCopy",
      "count": 3
    },
    
  2. Funktionen copyIndex() returnerar den aktuella iterationen i loopen. Du kan använda indexet som namnprefix. copyIndex() är nollbaserat. Om du vill förskjuta indexvärdet kan du skicka ett värde i copyIndex() funktionen. Till exempel copyIndex(1).

    "name": "[format('{0}storage{1}', copyIndex(), uniqueString(resourceGroup().id))]",
    
    
    
  3. Ta bort parameterdefinitionen storageAccountName eftersom den inte används längre.

  4. Ta bort elementet outputs . Det behövs inte längre.

  5. Ta bort elementet metadata .

Den färdiga mallen ser ut så här:

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

Spara ändringarna.

Mer information om hur du skapar flera instanser finns i Resurs iteration i ARM-mallar

Distribuera mallen

  1. Logga in på Azure Cloud Shell

  2. Välj önskad miljö genom att välja Antingen PowerShell eller Bash (för CLI) i det övre vänstra hörnet. Du måste starta om gränssnittet när du byter.

    Azure Portal Cloud Shell ladda upp fil

  3. Välj Ladda upp/ned filer och välj sedan Ladda upp. Se föregående skärmbild. Välj den fil som du sparade i föregående avsnitt. När du har laddat upp filen kan du använda ls kommandot och cat kommandot för att kontrollera att filen har laddats upp.

  4. Kör följande kommandon från Cloud Shell. Välj fliken så att du ser PowerShell-koden eller CLI-koden.

    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"
    

Efter en lyckad malldistribution kan du visa de tre lagringskonton som skapats i den angivna resursgruppen. Jämför lagringskontonamn med namndefinitionen i mallen.

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 ..."

Rensa resurser

När Azure-resurserna inte längre behövs rensar du de resurser som du har distribuerat genom att ta bort resursgruppen.

  1. I Azure Portal väljer du Resursgrupp på den vänstra menyn.
  2. Ange resursgruppens namn i fältet Filtrera efter namn.
  3. Välj resursgruppens namn. Du ska se totalt tre resurser i resursgruppen.
  4. Välj Ta bort resursgrupp på den översta menyn.

Nästa steg

I de här självstudierna lärde du dig att skapa flera instanser av ett lagringskonto. I nästa självstudie utvecklar du en mall med flera resurser och flera resurstyper. Några av resurserna har beroende resurser.