Dela via


Självstudie: Lägga till parametrar i ARM-mallen

I den föregående självstudien lärde du dig att lägga till ett Azure Storage-konto i mallen och distribuera det. I den här självstudien får du lära dig hur du förbättrar Azure Resource Manager-mallen (ARM-mall) genom att lägga till parametrar. Den här instruktionen tar 14 minuter att slutföra.

Förutsättningar

Vi rekommenderar att du slutför självstudien om resurser, men det krävs inte.

Du måste ha Visual Studio Code installerat och arbeta med Azure Resource Manager Tools-tillägget och antingen Azure PowerShell eller Azure Command-Line Interface (CLI). Mer information finns i mallverktyg.

Granska mall

I slutet av föregående självstudie har mallen följande JSON-fil:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "{provide-unique-name}",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Du kanske märker att det finns ett problem med den här mallen. Lagringskontots namn är hårdkodat. Du kan bara använda den här mallen för att distribuera samma lagringskonto varje gång. Om du vill distribuera ett lagringskonto med ett annat namn måste du skapa en ny mall, vilket uppenbarligen inte är ett praktiskt sätt att automatisera dina distributioner.

Gör mallen återanvändbar

För att göra mallen återanvändbar ska vi lägga till en parameter som du kan använda för att skicka in ett lagringskontonamn. Den markerade JSON-filen i följande exempel visar ändringarna i mallen. Parametern storageName identifieras som en sträng. Lagringskontonamnet är bara gemener eller siffror och har en gräns på 24 tecken.

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
    }
  },
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2021-09-01",
      "name": "[parameters('storageName')]",
      "location": "eastus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ]
}

Distribuera mallen

Nu ska vi distribuera mallen. I följande exempel distribueras mallen med Azure CLI eller PowerShell. Observera att du anger lagringskontonamnet som ett av värdena i distributionskommandot. Ange samma namn som du använde i föregående självstudie för lagringskontots namn.

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

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

Förstå resursuppdateringar

När du har distribuerat ett lagringskonto med samma namn som du använde tidigare kanske du undrar hur omdistributionen påverkar resursen.

Om resursen redan finns och egenskaperna inte ändras behöver du inte vidta några åtgärder. Om resursen finns och en egenskap ändras uppdateras den. Om resursen inte finns skapas den.

Det här sättet att hantera uppdateringar innebär att mallen kan innehålla alla resurser du behöver för en Azure-lösning. Du kan distribuera om mallen på ett säkert sätt och veta att resurserna ändras eller bara skapas när det behövs. Om du till exempel lägger till filer i ditt lagringskonto kan du distribuera om lagringskontot utan att förlora filerna.

Anpassa efter miljö

Med parametrar kan du anpassa distributionen genom att tillhandahålla värden som är skräddarsydda för en viss miljö. Du kan skicka olika värden, till exempel baserat på om du distribuerar till en utvecklings-, testnings- eller produktionsmiljö.

Den tidigare mallen distribuerar alltid ett lokalt redundant standardlagringskonto (LRS) Standard_LRS konto. Du kanske vill ha flexibiliteten att distribuera olika lagerhållningsenheter (SKU:er) beroende på miljön. I följande exempel visas ändringarna för att lägga till en parameter för SKU. Kopiera hela filen och klistra in den över mallen.

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

Parametern storageSKU har ett standardvärde. Använd det här värdet när distributionen inte anger det. Den har också en lista över tillåtna värden. Dessa värden matchar de värden som behövs för att skapa ett lagringskonto. Du vill att mallanvändarna ska skicka SKU:er som fungerar.

Distribuera om mallen

Du är redo att distribuera igen. Eftersom standard-SKU:n är inställd på Standard_LRS har du redan angett ett parametervärde.

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

Anteckning

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.

Om du vill se flexibiliteten i mallen ska vi distribuera den igen. Den här gången ställer du in SKU-parametern på grs-Standard_GRS (Standard Geo-Redundant Storage). Du kan antingen skicka ett nytt namn för att skapa ett annat lagringskonto eller använda samma namn för att uppdatera ditt befintliga lagringskonto. Båda alternativen fungerar.

New-AzResourceGroupDeployment `
  -Name usenondefaultsku `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU Standard_GRS

Slutligen ska vi köra ytterligare ett test och se vad som händer när du skickar in en SKU som inte är ett av de tillåtna värdena. I det här fallet testar vi scenariot där mallanvändaren tycker att basic är en av SKU:erna.

New-AzResourceGroupDeployment `
  -Name testskuparameter `
  -ResourceGroupName myResourceGroup `
  -TemplateFile $templateFile `
  -storageName "{your-unique-name}" `
  -storageSKU basic

Kommandot misslyckas samtidigt med ett felmeddelande som ger de tillåtna värdena. ARM-processorn hittar felet innan distributionen startar.

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 rensa dina distribuerade resurser 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 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

Du förbättrade mallen som du skapade i den första självstudien genom att lägga till parametrar. I nästa självstudie lär du dig mer om mallfunktioner.