Skapa Resource Manager-parameterfil
I stället för att skicka parametrar som infogade värden i skriptet kan du använda en JSON-fil som innehåller parametervärdena. Den här artikeln visar hur du skapar en parameterfil som du använder med en JSON-mall.
Dricks
Vi rekommenderar Bicep eftersom det erbjuder samma funktioner som ARM-mallar och syntaxen är enklare att använda. Mer information finns i parameterfiler.
Parameterfil
En parameterfil använder följande format:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"<first-parameter-name>": {
"value": "<first-value>"
},
"<second-parameter-name>": {
"value": "<second-value>"
}
}
}
Det är värt att notera att parameterfilen sparar parametervärden som oformaterad text. Av säkerhetsskäl rekommenderas inte den här metoden för känsliga värden, till exempel lösenord. Om du måste skicka en parameter med ett känsligt värde behåller du värdet i ett nyckelvalv. I parameterfilen innehåller du sedan en referens till nyckelvalvet. Under distributionen hämtas det känsliga värdet på ett säkert sätt. Mer information finns i Använda Azure Key Vault för att skicka säkert parametervärde under distributionen.
Följande parameterfil innehåller ett oformaterad textvärde och ett känsligt värde som lagras i ett nyckelvalv.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"<first-parameter-name>": {
"value": "<first-value>"
},
"<second-parameter-name>": {
"reference": {
"keyVault": {
"id": "<resource-id-key-vault>"
},
"secretName": "<secret-name>"
}
}
}
}
Mer information om hur du använder värden från ett nyckelvalv finns i Använda Azure Key Vault för att skicka säkert parametervärde under distributionen.
Definiera parametervärden
Om du vill ta reda på hur du definierar parameternamn och värden öppnar du JSON-mallen och granskar avsnittet parameters
. I följande exempel visas JSON-mallens parametrar.
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"storageAccountType": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_ZRS",
"Premium_LRS"
]
}
}
I parameterfilen är den första informationen som ska märkas namnet på varje parameter. Parameternamnen i parameterfilen måste matcha parameternamnen i mallen.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
},
"storageAccountType": {
}
}
}
Observera parametertypen. Parametertyperna i parameterfilen måste använda samma typer som mallen. I det här exemplet är båda parametertyperna strängar.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": ""
},
"storageAccountType": {
"value": ""
}
}
}
Kontrollera mallen efter parametrar med ett standardvärde. Om en parameter har ett standardvärde kan du ange ett värde i parameterfilen, men det krävs inte. Parameterfilvärdet åsidosätter mallens standardvärde.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "" // This value must be provided.
},
"storageAccountType": {
"value": "" // This value is optional. Template will use default value if not provided.
}
}
}
Kontrollera mallens tillåtna värden och eventuella begränsningar, till exempel maximal längd. Dessa värden anger det värdeintervall som du kan ange för en parameter. I det här exemplet storagePrefix
kan ha högst 11 tecken och storageAccountType
måste ange ett tillåtet värde.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"value": "storage"
},
"storageAccountType": {
"value": "Standard_ZRS"
}
}
}
Kommentar
Parameterfilen kan bara innehålla värden för parametrar som definieras i mallen. Om parameterfilen innehåller extra parametrar som inte matchar mallens parametrar får du ett fel.
Format för parametertyper
I följande exempel visas formaten för olika parametertyper: sträng, heltal, boolesk, matris och objekt.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"exampleString": {
"value": "test string"
},
"exampleInt": {
"value": 4
},
"exampleBool": {
"value": true
},
"exampleArray": {
"value": [
"value 1",
"value 2"
]
},
"exampleObject": {
"value": {
"property1": "value1",
"property2": "value2"
}
}
}
}
Distribuera mall med parameterfil
Från Azure CLI skickar du en lokal parameterfil med hjälp av @
och parameterfilens namn. Exempel: @storage.parameters.json
az deployment group create \
--name ExampleDeployment \
--resource-group ExampleGroup \
--template-file storage.json \
--parameters @storage.parameters.json
Mer information finns i Distribuera resurser med ARM-mallar och Azure CLI.
Från Azure PowerShell skickar du en lokal parameterfil med hjälp av parametern TemplateParameterFile
.
New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
-TemplateFile C:\MyTemplates\storage.json `
-TemplateParameterFile C:\MyTemplates\storage.parameters.json
Mer information finns i Distribuera resurser med ARM-mallar och Azure PowerShell.
Kommentar
Det går inte att använda en parameterfil med det anpassade mallbladet i portalen.
Dricks
Om du använder Azure Resource Group-projektet i Visual Studio kontrollerar du att parameterfilen har dess Build Action inställd på Innehåll.
Filnamn
Den allmänna namngivningskonventionen för parameterfilen är att inkludera parametrar i mallnamnet. Om mallen till exempel heter azuredeploy.json heter parameterfilen azuredeploy.parameters.json. Den här namngivningskonventionen hjälper dig att se anslutningen mellan mallen och parametrarna.
Om du vill distribuera till olika miljöer skapar du mer än en parameterfil. När du namnger parameterfilerna identifierar du deras användning, till exempel utveckling och produktion. Använd till exempel azuredeploy.parameters-dev.json och azuredeploy.parameters-prod.json för att distribuera resurser.
Parameterpriorence
Du kan använda infogade parametrar och en lokal parameterfil i samma distributionsåtgärd. Du kan till exempel ange vissa värden i den lokala parameterfilen och lägga till andra värden infogade under distributionen. Om du anger värden för en parameter i både den lokala parameterfilen och infogade värden har det infogade värdet företräde.
Det går att använda en extern parameterfil genom att ange URI:n för filen. När du använder en extern parameterfil kan du inte skicka andra värden antingen infogade eller från en lokal fil. Alla infogade parametrar ignoreras. Ange alla parametervärden i den externa filen.
Parameternamnkonflikter
Om mallen innehåller en parameter med samma namn som en av parametrarna i PowerShell-kommandot, visar PowerShell parametern från mallen med postfixet FromTemplate
. En parameter med namnet ResourceGroupName
i mallen står till exempel i konflikt med parametern ResourceGroupName
i cmdleten New-AzResourceGroupDeployment . Du uppmanas att ange ett värde för ResourceGroupNameFromTemplate
. Undvik den här förvirringen genom att använda parameternamn som inte används för distributionskommandon.
Nästa steg
- Mer information om hur du definierar parametrar i en mall finns i Parametrar i ARM-mallar.
- Mer information om hur du använder värden från ett nyckelvalv finns i Använda Azure Key Vault för att skicka säkert parametervärde under distributionen.