Dela via


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

I den föregående självstudien lärde du dig hur du lägger till ett Azure Storage-konto i mallen och distribuerar det. I den här självstudien lär du dig att förbättra 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 och antingen Azure PowerShell eller Azure CLI. Mer information finns i mallverktyg.

Granskningsmall

I slutet av den föregående självstudien 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. Lagringskontonamnet ä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. JSON-filen i följande exempel visar ändringarna i mallen. Parametern storageName identifieras som en sträng. Namn på lagringskontot består uteslutande av små bokstäver 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 Azure 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 handledningen.

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 det inte finns någon ändring i egenskaperna behöver du inte vidta ytterligare å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 som 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 till ditt lagringskonto kan du distribuera om lagringskontot utan att förlora filerna.

Anpassa efter miljö

Med parametrar kan du anpassa distributionen genom att ange 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.

Omdistribuera mall

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

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.

För att se flexibiliteten i din mall, låt oss distribuera den igen. Den här gången anger du SKU-parametern till standard geo-redundant lagring (GRS) Standard_GRS. Du kan antingen skicka in 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 anser att basic är en av SKU:erna.

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

Kommandot misslyckas omedelbart 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-portalen väljer du Resursgrupp 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

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