Share via


Een Resource Manager-parameterbestand maken

In plaats van parameters als inlinewaarden in uw script door te geven, kunt u een JSON-bestand gebruiken dat de parameterwaarden bevat. In dit artikel wordt beschreven hoe u een parameterbestand maakt dat u gebruikt met een JSON-sjabloon.

Tip

We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis gemakkelijker te gebruiken is. Zie parameterbestanden voor meer informatie.

Parameterbestand

Een parameterbestand gebruikt de volgende indeling:

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

Het is de moeite waard om te vermelden dat het parameterbestand parameterwaarden opslaat als tekst zonder opmaak. Om veiligheidsredenen wordt deze methode niet aanbevolen voor gevoelige waarden, zoals wachtwoorden. Als u een parameter met een gevoelige waarde moet doorgeven, houdt u de waarde in een sleutelkluis. Voeg vervolgens in het parameterbestand een verwijzing naar de sleutelkluis toe. Tijdens de implementatie wordt de gevoelige waarde veilig opgehaald. Zie Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven.

Het volgende parameterbestand bevat een waarde voor tekst zonder opmaak en een gevoelige waarde die is opgeslagen in een sleutelkluis.

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

Zie Azure Key Vault gebruiken om tijdens de implementatie veilige parameterwaarde door te geven voor meer informatie over het gebruik van waarden uit een sleutelkluis.

Parameterwaarden definiëren

Als u wilt bepalen hoe u de parameternamen en -waarden definieert, opent u de JSON-sjabloon en controleert u de parameters sectie. In het volgende voorbeeld ziet u de parameters van de JSON-sjabloon.

"parameters": {
  "storagePrefix": {
    "type": "string",
    "maxLength": 11
  },
  "storageAccountType": {
    "type": "string",
    "defaultValue": "Standard_LRS",
    "allowedValues": [
    "Standard_LRS",
    "Standard_GRS",
    "Standard_ZRS",
    "Premium_LRS"
    ]
  }
}

Het eerste detail in het parameterbestand is de naam van elke parameter. De parameternamen in het parameterbestand moeten overeenkomen met de parameternamen in uw sjabloon.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
    },
    "storageAccountType": {
    }
  }
}

Let op het parametertype. De parametertypen in het parameterbestand moeten dezelfde typen gebruiken als uw sjabloon. In dit voorbeeld zijn beide parametertypen tekenreeksen.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "storagePrefix": {
      "value": ""
    },
    "storageAccountType": {
      "value": ""
    }
  }
}

Controleer de sjabloon op parameters met een standaardwaarde. Als een parameter een standaardwaarde heeft, kunt u een waarde opgeven in het parameterbestand, maar deze is niet vereist. De waarde van het parameterbestand overschrijft de standaardwaarde van de sjabloon.

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

Controleer de toegestane waarden van de sjabloon en eventuele beperkingen, zoals maximale lengte. Deze waarden geven het bereik van waarden op dat u voor een parameter kunt opgeven. In dit voorbeeld storagePrefix mogen maximaal 11 tekens zijn en storageAccountType moet een toegestane waarde worden opgegeven.

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

Notitie

Het parameterbestand kan alleen waarden bevatten voor parameters die zijn gedefinieerd in de sjabloon. Als uw parameterbestand extra parameters bevat die niet overeenkomen met de parameters van de sjabloon, ontvangt u een foutmelding.

Parametertype-indelingen

In het volgende voorbeeld ziet u de indelingen van verschillende parametertypen: tekenreeks, geheel getal, booleaanse waarde, matrix en object.

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

Sjabloon implementeren met parameterbestand

Vanuit Azure CLI geeft u een lokaal parameterbestand door met behulp van @ de parameterbestandsnaam. Bijvoorbeeld: @storage.parameters.json.

az deployment group create \
  --name ExampleDeployment \
  --resource-group ExampleGroup \
  --template-file storage.json \
  --parameters @storage.parameters.json

Zie Resources implementeren met ARM-sjablonen en Azure CLI voor meer informatie.

Vanuit Azure PowerShell geeft u een lokaal parameterbestand door met behulp van de TemplateParameterFile parameter.

New-AzResourceGroupDeployment -Name ExampleDeployment -ResourceGroupName ExampleResourceGroup `
  -TemplateFile C:\MyTemplates\storage.json `
  -TemplateParameterFile C:\MyTemplates\storage.parameters.json

Zie Resources implementeren met ARM-sjablonen en Azure PowerShell voor meer informatie.

Notitie

Het is niet mogelijk om een parameterbestand te gebruiken met de blade aangepaste sjablonen in de portal.

Tip

Als u het Azure Resource Group-project in Visual Studio gebruikt, controleert u of het parameterbestand de buildactie heeft ingesteld op Inhoud.

Bestandsnaam

De algemene naamconventie voor het parameterbestand bestaat uit het opnemen van parameters in de naam van de sjabloon. Als de sjabloon bijvoorbeeld azuredeploy.json heet, heeft het parameterbestand de naam azuredeploy.parameters.json. Deze naamconventie helpt u bij het zien van de verbinding tussen de sjabloon en de parameters.

Als u wilt implementeren in verschillende omgevingen, maakt u meer dan één parameterbestand. Wanneer u de parameterbestanden een naamgeeft, identificeert u het gebruik ervan, zoals ontwikkeling en productie. Gebruik bijvoorbeeld azuredeploy.parameters-dev.json en azuredeploy.parameters-prod.json om resources te implementeren.

Parameterprioriteit

U kunt inlineparameters en een lokaal parameterbestand in dezelfde implementatiebewerking gebruiken. U kunt bijvoorbeeld enkele waarden opgeven in het lokale parameterbestand en andere waarden inline toevoegen tijdens de implementatie. Als u waarden opgeeft voor een parameter in zowel het lokale parameterbestand als inline, heeft de inlinewaarde voorrang.

Het is mogelijk om een extern parameterbestand te gebruiken door de URI aan het bestand op te geven. Wanneer u een extern parameterbestand gebruikt, kunt u geen andere waarden inline of vanuit een lokaal bestand doorgeven. Alle inlineparameters worden genegeerd. Geef alle parameterwaarden op in het externe bestand.

Conflicten met parameternamen

Als uw sjabloon een parameter bevat met dezelfde naam als een van de parameters in de PowerShell-opdracht, geeft PowerShell de parameter van uw sjabloon weer met het postfix FromTemplate. Een parameter die in uw sjabloon wordt genoemd ResourceGroupName , is bijvoorbeeld strijdig met de ResourceGroupName parameter in de cmdlet New-AzResourceGroupDeployment . U wordt gevraagd een waarde op te geven voor ResourceGroupNameFromTemplate. Gebruik parameternamen die niet worden gebruikt voor implementatieopdrachten om deze verwarring te voorkomen.

Volgende stappen