Parametrar i ARM-mallar

Den här artikeln beskriver hur du definierar och använder parametrar i din Azure Resource Manager mall (ARM-mall). Genom att ange olika värden för parametrar kan du återanvända en mall för olika miljöer.

Resource Manager matchar parametervärden innan distributionsåtgärder startas. Oavsett var parametern används i mallen Resource Manager den med det lösta värdet.

Varje parameter måste anges till en av datatyperna.

Minimal deklaration

Varje parameter måste minst ha ett namn och en typ.

När du distribuerar en mall via Azure Portal omvandlas kamelarts parameternamn till blankstegsavgränsade namn. Till exempel visas demoString i följande exempel som demosträng. Mer information finns i Använda en distributionsknapp för att distribuera mallar från GitHub-lagringsplatsen och Distribuera resurser med ARM-mallar och Azure Portal.

"parameters": {
  "demoString": {
    "type": "string"
  },
  "demoInt": {
    "type": "int"
  },
  "demoBool": {
    "type": "bool"
  },
  "demoObject": {
    "type": "object"
  },
  "demoArray": {
    "type": "array"
  }
}

Säkra parametrar

Du kan markera sträng- eller objektparametrar som säkra. Värdet för en säker parameter sparas inte i distributionshistoriken och loggas inte.

"parameters": {
  "demoPassword": {
    "type": "secureString"
  },
  "demoSecretObject": {
    "type": "secureObject"
  }
}

Tillåtna värden

Du kan definiera tillåtna värden för en parameter. Du anger de tillåtna värdena i en matris. Distributionen misslyckas under valideringen om ett värde skickas för parametern som inte är ett av de tillåtna värdena.

"parameters": {
  "demoEnum": {
    "type": "string",
    "allowedValues": [
      "one",
      "two"
    ]
  }
}

Standardvärde

Du kan ange ett standardvärde för en parameter. Standardvärdet används när ett värde inte anges under distributionen.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso"
  }
}

Om du vill ange ett standardvärde tillsammans med andra egenskaper för parametern använder du följande syntax.

"parameters": {
  "demoParam": {
    "type": "string",
    "defaultValue": "Contoso",
    "allowedValues": [
      "Contoso",
      "Fabrikam"
    ]
  }
}

Du kan använda uttryck med standardvärdet. Du kan inte använda referensfunktionen eller någon av listfunktionerna i parameteravsnittet. Dessa funktioner hämtar körningstillståndet för en resurs och kan inte köras innan distributionen när parametrarna har lösts.

Uttryck tillåts inte med andra parameteregenskaper.

"parameters": {
  "location": {
    "type": "string",
    "defaultValue": "[resourceGroup().location]"
  }
}

Du kan använda ett annat parametervärde för att skapa ett standardvärde. Följande mall skapar ett värdplansnamn från platsnamnet.

"parameters": {
  "siteName": {
    "type": "string",
    "defaultValue": "[concat('site', uniqueString(resourceGroup().id))]"
  },
  "hostingPlanName": {
    "type": "string",
    "defaultValue": "[concat(parameters('siteName'),'-plan')]"
  }
}

Längdbegränsningar

Du kan ange minsta och högsta längd för sträng- och matrisparametrar. Du kan ange en eller båda begränsningarna. För strängar anger längden antalet tecken. För matriser anger längden antalet objekt i matrisen.

I följande exempel deklareras två parametrar. En parameter är för ett lagringskontonamn som måste innehålla mellan 3 och 24 tecken. Den andra parametern är en matris som måste ha mellan 1 och 5 objekt.

"parameters": {
  "storageAccountName": {
    "type": "string",
    "minLength": 3,
    "maxLength": 24
  },
  "appNames": {
    "type": "array",
    "minLength": 1,
    "maxLength": 5
  }
}

Heltalsbegränsningar

Du kan ange lägsta och högsta värden för heltalsparametrar. Du kan ange en eller båda begränsningarna.

"parameters": {
  "month": {
    "type": "int",
    "minValue": 1,
    "maxValue": 12
  }
}

Description

Du kan lägga till en beskrivning i en parameter för att hjälpa användare av mallen att förstå värdet som ska anges. När du distribuerar mallen via portalen används den text som du anger i beskrivningen automatiskt som ett tips för den parametern. Lägg bara till en beskrivning när texten ger mer information än vad som kan härledas från parameternamnet.

"parameters": {
  "virtualMachineSize": {
    "type": "string",
    "metadata": {
      "description": "Must be at least Standard_A3 to support 2 NICs."
    },
    "defaultValue": "Standard_DS1_v2"
  }
}

Använd parameter

Om du vill referera till en parameters värde använder du parameterfunktionen . I följande exempel används ett parametervärde för ett nyckelvalvsnamn.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vaultName": {
      "type": "string",
      "defaultValue": "[format('keyVault{0}', uniqueString(resourceGroup().id))]"
    }
  },
  "resources": [
    {
      "type": "Microsoft.KeyVault/vaults",
      "apiVersion": "2021-06-01-preview",
      "name": "[parameters('vaultName')]",
      ...
    }
  ]
}

Objekt som parametrar

Du kan ordna relaterade värden genom att skicka dem som ett objekt. Den här metoden minskar också antalet parametrar i mallen.

I följande exempel visas en parameter som är ett -objekt. Standardvärdet visar förväntade egenskaper för objektet. Dessa egenskaper används när du definierar resursen som ska distribueras.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "vNetSettings": {
      "type": "object",
      "defaultValue": {
        "name": "VNet1",
        "location": "eastus",
        "addressPrefixes": [
          {
            "name": "firstPrefix",
            "addressPrefix": "10.0.0.0/22"
          }
        ],
        "subnets": [
          {
            "name": "firstSubnet",
            "addressPrefix": "10.0.0.0/24"
          },
          {
            "name": "secondSubnet",
            "addressPrefix": "10.0.1.0/24"
          }
        ]
      }
    }
  },
  "resources": [
    {
      "type": "Microsoft.Network/virtualNetworks",
      "apiVersion": "2021-02-01",
      "name": "[parameters('vNetSettings').name]",
      "location": "[parameters('vNetSettings').location]",
      "properties": {
        "addressSpace": {
          "addressPrefixes": [
            "[parameters('vNetSettings').addressPrefixes[0].addressPrefix]"
          ]
        },
        "subnets": [
          {
            "name": "[parameters('vNetSettings').subnets[0].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[0].addressPrefix]"
            }
          },
          {
            "name": "[parameters('vNetSettings').subnets[1].name]",
            "properties": {
              "addressPrefix": "[parameters('vNetSettings').subnets[1].addressPrefix]"
            }
          }
        ]
      }
    }
  ]
}

Exempelmallar

I följande exempel visas scenarier för att använda parametrar.

Mall Description
parametrar med funktioner för standardvärden Visar hur du använder mallfunktioner när du definierar standardvärden för parametrar. Mallen distribuerar inga resurser. Den konstruerar parametervärden och returnerar dessa värden.
parameterobjekt Visar hur du använder ett -objekt för en parameter. Mallen distribuerar inga resurser. Den konstruerar parametervärden och returnerar dessa värden.

Nästa steg