Dela via


Självstudie: Lägga till mallfunktioner i din Azure Resource Manager-mall

I den här självstudien får du lära dig hur du lägger till mallfunktioner i din Azure Resource Manager-mall (ARM-mall). Du använder funktioner för att dynamiskt konstruera värden. Förutom de här mallfunktionerna som tillhandahålls av systemet kan du även skapa användardefinierade funktioner. Den här tutorialen tar 7 minuter att slutföra.

Förutsättningar

Vi rekommenderar att du slutför självstudien om parametrar, men det är inte obligatoriskt.

Du måste ha Visual Studio Code och Azure PowerShell eller Azure CLI. Mer information finns i mallverktyg.

Granskningsmall

I slutet av den föregående självstudien hade mallen följande JSON-fil:

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

Anta att du hårdkodade platsen för Azure Storage-kontottill eastus, men du måste distribuera det till en annan region. Du måste lägga till en parameter för att lägga till flexibilitet i mallen och tillåta att den har en annan plats.

Använd funktion

Om du har slutfört självstudien om parametrar använde du en funktion. När du lade till "[parameters('storageName')]"använde du parameterfunktionen . Hakparenteserna anger att syntaxen inom hakparenteserna är ett malluttryck. Resource Manager löser syntaxen i stället för att behandla den som ett literalvärde.

Funktioner ger mallen flexibilitet genom att dynamiskt hämta värden under distributionen. I den här handledningen använder du en funktion för att hämta resursgruppens utplaceringsplats.

I följande exempel markeras ändringarna för att lägga till en parameter med namnet location. Parameterns standardvärde anropar funktionen resourceGroup . Den här funktionen returnerar ett objekt med information om den distribuerade resursgruppen. En av objektegenskaperna är en platsegenskap. När du använder standardvärdet har lagringskontot och resursgruppen samma plats. Resurserna i en grupp har olika platser.

Kopiera hela filen och ersätt mallen med dess innehåll:

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

Distribuera mallen

I de föregående självstudierna skapade du ett lagringskonto i östra USA, men din resursgrupp skapas i centrala USA. I den här självstudien skapar du ett lagringskonto i samma region som resursgruppen. Använd standardvärdet för plats, så du behöver inte ange parametervärdet. Du måste ange ett nytt namn för lagringskontot eftersom du skapar ett lagringskonto på en annan plats. Använd till exempel Store2 som prefix i stället för store1.

Om du inte har skapat resursgruppen kan du läsa Skapa resursgrupp. Exemplet förutsätter att du har angett variabeln templateFile till sökvägen till mallfilen, som du ser i den första självstudien.

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

Anmärkning

Om distributionen misslyckas använder du växeln verbose för att hämta information om de resurser som skapas. Använd växeln debug för att få mer information om felsökning.

Verifiera driftsättningen

Du kan verifiera distributionen genom att utforska resursgruppen från Azure-portalen.

  1. Logga in på Azure-portalen.
  2. Välj Resursgrupper på den vänstra menyn.
  3. Markera kryssrutan till vänster om myResourceGroup och välj myResourceGroup.
  4. Välj den resursgrupp som du skapade. Standardnamnet är myResourceGroup.
  5. Observera att ditt distribuerade lagringskonto och resursgruppen har samma plats.

Rensa resurser

Om du går vidare till nästa självstudie behöver du inte ta bort resursgruppen.

Om du slutar nu kanske du vill ta bort resursgruppen.

  1. I Azure-portalen väljer du Resursgrupper på den vänstra menyn.
  2. Skriv resursgruppens namn i fältet Filter för alla fält... textfält.
  3. Markera kryssrutan bredvid myResourceGroup och välj myResourceGroup eller resursgruppens namn.
  4. Välj Ta bort resursgrupp på den översta menyn.

Nästa steg

I den här självstudien använder du en funktion för att definiera standardvärdet för en parameter. I den här självstudieserien fortsätter du att använda funktioner. I slutet av serien lägger du till funktioner i varje mallavsnitt.