Dela via


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