Informatie over de structuur en de syntaxis van ARM-sjablonen

In dit artikel wordt de structuur van een Arm-sjabloon (Azure Resource Manager) beschreven. Het toont de verschillende secties van een sjabloon en de eigenschappen die beschikbaar zijn in die secties.

Dit artikel is bedoeld voor gebruikers die bekend zijn met ARM-sjablonen. Het bevat gedetailleerde informatie over de structuur van de sjabloon. Zie Zelfstudie: Uw eerste ARM-sjabloon maken en implementeren voor een stapsgewijze zelfstudie die u begeleidt bij het maken van een sjabloon. Zie Resources implementeren en beheren in Azure met behulp van ARM-sjablonen voor meer informatie over ARM-sjablonen via een begeleide set Learn-modules.

Tip

Bicep is een nieuwe taal die dezelfde mogelijkheden biedt als ARM-sjablonen, maar met een syntaxis die gemakkelijker te gebruiken is. Als u infrastructuur als codeopties overweegt, raden we u aan bicep te bekijken.

Zie Inzicht in de structuur en syntaxis van Bicep-bestanden voor meer informatie over de elementen van een Bicep-bestand.

Sjabloonindeling

In de eenvoudigste structuur heeft een sjabloon de volgende elementen:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "",
  "contentVersion": "",
  "apiProfile": "",
  "definitions": { },
  "parameters": { },
  "variables": { },
  "functions": [ ],
  "resources": [ ], /* or "resources": { } with languageVersion 2.0 */
  "outputs": { }
}
Elementnaam Vereist Beschrijving
$schema Yes Locatie van het JSON-schemabestand (JavaScript Object Notation) waarin de versie van de sjabloontaal wordt beschreven. Het versienummer dat u gebruikt, is afhankelijk van het bereik van de implementatie en uw JSON-editor.

Als u Visual Studio Code gebruikt met de extensie Azure Resource Manager tools, gebruikt u de nieuwste versie voor resourcegroepimplementaties:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

Andere editors (waaronder Visual Studio) kunnen dit schema mogelijk niet verwerken. Gebruik voor deze editors:
https://schema.management.azure.com/schemas/2015-01-01/deploymentTemplate.json#

Gebruik voor abonnementsimplementaties:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Gebruik voor beheergroepimplementaties:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Gebruik voor tenantimplementaties:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
languageVersion No Taalversie van de sjabloon. Zie languageVersion 2.0 voor meer informatie over de verbeteringen van languageVersion 2.0.
contentVersion Yes Versie van de sjabloon (zoals 1.0.0.0). U kunt een willekeurige waarde voor dit element opgeven. Gebruik deze waarde als u belangrijke wijzigingen in uw sjabloon wilt documenteren. Wanneer u resources implementeert met de sjabloon, kan deze waarde worden gebruikt om ervoor te zorgen dat de juiste sjabloon wordt gebruikt.
apiProfile No Een API-versie die fungeert als een verzameling API-versies voor resourcetypen. Gebruik deze waarde om te voorkomen dat u API-versies voor elke resource in de sjabloon moet opgeven. Wanneer u een API-profielversie opgeeft en geen API-versie opgeeft voor het resourcetype, gebruikt Resource Manager de API-versie voor dat resourcetype dat in het profiel is gedefinieerd.

De eigenschap API-profiel is vooral handig bij het implementeren van een sjabloon in verschillende omgevingen, zoals Azure Stack en globale Azure. Gebruik de API-profielversie om ervoor te zorgen dat uw sjabloon automatisch versies gebruikt die in beide omgevingen worden ondersteund. Zie API-profiel voor een lijst met de huidige API-profielversies en de API-versies van resources die in het profiel zijn gedefinieerd.

Zie Versies bijhouden met API-profielen voor meer informatie.
Definities No Schema's die worden gebruikt om matrix- en objectwaarden te valideren. Definities worden alleen ondersteund in languageVersion 2.0.
parameters No Waarden die worden opgegeven wanneer de implementatie wordt uitgevoerd om de resource-implementatie aan te passen.
Variabelen No Waarden die worden gebruikt als JSON-fragmenten in de sjabloon om sjabloontaalexpressies te vereenvoudigen.
Functies No Door de gebruiker gedefinieerde functies die beschikbaar zijn in de sjabloon.
Middelen Yes Resourcetypen die zijn geïmplementeerd of bijgewerkt in een resourcegroep of abonnement.
Uitgangen No Waarden die worden geretourneerd na de implementatie.

Elk element heeft eigenschappen die u kunt instellen. In dit artikel worden de secties van de sjabloon uitgebreider beschreven.

Definities

Geef in de definitions sectie van de sjabloon de schema's op die worden gebruikt voor het valideren van matrix- en objectwaarden. Definitions kan alleen worden gebruikt met languageVersion 2.0.

"definitions": {
  "<definition-name": {
    "type": "<data-type-of-definition>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array>,
    "prefixItems": <schema-for-validating-array>,
    "items": <schema-for-validating-array-or-boolean>,
    "properties": <schema-for-validating-object>,
    "additionalProperties": <schema-for-validating-object-or-boolean>,
    "discriminator": <schema-to-apply>,
    "nullable": <boolean>,
    "metadata": {
      "description": "<description-of-the-type-definition>"
    }
  }
}
Elementnaam Vereist Beschrijving
definitienaam Yes Naam van de typedefinitie. Moet een geldige JavaScript-id zijn.
type Yes Type van de typedefinitie. De toegestane typen en waarden zijn string, securestring, int, bool, object, secureObject en matrix. Zie Gegevenstypen in ARM-sjablonen.
allowedValues No Matrix met toegestane waarden voor de typedefinitie om ervoor te zorgen dat de juiste waarde wordt opgegeven.
minValue No De minimumwaarde voor definities van het type int. Deze waarde is inclusief.
maxValue No De maximale waarde voor int-typedefinities, deze waarde is inclusief.
minLength No De minimale lengte voor definities van tekenreeksen, beveiligde tekenreeksen en matrixtypen. Deze waarde is inclusief.
Maxlength No De maximale lengte voor definities van tekenreeksen, beveiligde tekenreeksen en matrixtypen. Deze waarde is inclusief.
prefixItems No Het schema voor het valideren van het element van een matrix in dezelfde index.
items No Het schema dat wordt toegepast op alle elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking, of booleaanse waarde voor het beheren van de elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking.
properties No Het schema voor het valideren van het object.
additionalProperties No Het schema dat wordt toegepast op alle eigenschappen die niet worden vermeld in de properties beperking, of booleaanse waarde voor het accepteren van een eigenschap die niet is gedefinieerd in de properties beperking.
Discriminator No Het schema dat moet worden toegepast op basis van een discriminator-eigenschap.
nullable No Een booleaanse waarde die aangeeft dat de waarde null is of wordt weggelaten.
beschrijving No Beschrijving van de typedefinitie die wordt weergegeven voor gebruikers via de portal. Zie Opmerkingen in sjablonen voor meer informatie.

Zie Typedefinities in ARM-sjablonen voor voorbeelden van het gebruik van typedefinities.

Zie Door de gebruiker gedefinieerde gegevenstypen in Bicep.

Parameters

In de parameters sectie van de sjabloon geeft u op welke waarden u kunt invoeren bij het implementeren van de resources. U bent beperkt tot 256 parameters in een sjabloon. U kunt het aantal parameters verminderen met behulp van objecten die meerdere eigenschappen bevatten.

De eigenschappen die beschikbaar zijn voor een parameter zijn:

"parameters": {
  "<parameter-name>" : {
    "type" : "<type-of-parameter-value>",
    "defaultValue": "<default-value-of-parameter>",
    "allowedValues": [ "<array-of-allowed-values>" ],
    "minValue": <minimum-value-for-int>,
    "maxValue": <maximum-value-for-int>,
    "minLength": <minimum-length-for-string-or-array>,
    "maxLength": <maximum-length-for-string-or-array>,
    "prefixItems": <schema-for-validating-array>,
    "items": <schema-for-validating-array-or-boolean>,
    "properties": <schema-for-validating-object>,
    "additionalProperties": <schema-for-validating-object-or-boolean>,
    "discriminator": <schema-to-apply>,
    "nullable": <boolean>,
    "metadata": {
      "description": "<description-of-the parameter>"
    }
  }
}
Elementnaam Vereist Beschrijving
parameternaam Yes Naam van de parameter. Moet een geldige JavaScript-id zijn.
type Yes Type van de parameterwaarde. De toegestane typen en waarden zijn string, securestring, int, bool, object, secureObject en matrix. Zie Gegevenstypen in ARM-sjablonen.
standaardwaarde No Standaardwaarde voor de parameter, als er geen waarde is opgegeven voor de parameter.
allowedValues No Matrix van toegestane waarden voor de parameter om ervoor te zorgen dat de juiste waarde wordt opgegeven.
minValue No De minimale waarde voor parameters van het int-type, deze waarde is inclusief.
maxValue No De maximale waarde voor parameters van het type int, deze waarde is inclusief.
minLength No Deze waarde is inclusief de minimale lengte voor de parameters tekenreeks, veilige tekenreeks en matrixtype.
Maxlength No Deze waarde is inclusief de maximale lengte voor de parameters tekenreeks, beveiligde tekenreeks en matrixtype.
voorvoegselItems No De typedefinitie voor het valideren van het element van een matrix in dezelfde index. prefixItems wordt alleen ondersteund in languageVersion 2.0.
items No Het schema dat wordt toegepast op alle elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking, of booleaanse waarde voor het beheren van de elementen van de matrix waarvan de index groter is dan de grootste index van de prefixItems beperking. items wordt alleen ondersteund in languageVersion 2.0.
properties No Het schema voor het valideren van het object. properties wordt alleen ondersteund in languageVersion 2.0.
additionalProperties No Het schema dat wordt toegepast op alle eigenschappen die niet worden vermeld in de properties beperking, of booleaanse waarde voor het accepteren van een eigenschap die niet is gedefinieerd in de properties beperking. additionalProperties wordt alleen ondersteund in languageVersion 2.0.
Discriminator No Het schema dat moet worden toegepast op basis van een discriminator-eigenschap. discriminator wordt alleen ondersteund in languageVersion 2.0.
nullable No Een booleaanse waarde die aangeeft dat de waarde null is of wordt weggelaten. nullable wordt alleen ondersteund in languageVersion 2.0.
beschrijving No Beschrijving van de parameter die wordt weergegeven voor gebruikers via de portal. Zie Opmerkingen in sjablonen voor meer informatie.

Zie Parameters in ARM-sjablonen voor voorbeelden van het gebruik van parameters.

Zie parameters in Bicep.

Variabelen

In de variables sectie maakt u waarden die in de hele sjabloon kunnen worden gebruikt. U hoeft geen variabelen te definiëren, maar ze vereenvoudigen uw sjabloon vaak door complexe expressies te verminderen. De indeling van elke variabele komt overeen met een van de gegevenstypen. U bent beperkt tot 256 variabelen in een sjabloon.

In het volgende voorbeeld ziet u de beschikbare opties voor het definiëren van een variabele:

"variables": {
  "<variable-name>": "<variable-value>",
  "<variable-name>": {
    <variable-complex-type-value>
  },
  "<variable-object-name>": {
    "copy": [
      {
        "name": "<name-of-array-property>",
        "count": <number-of-iterations>,
        "input": <object-or-value-to-repeat>
      }
    ]
  },
  "copy": [
    {
      "name": "<variable-array-name>",
      "count": <number-of-iterations>,
      "input": <object-or-value-to-repeat>
    }
  ]
}

Zie Variabele-iteratie voor informatie over het maken copy van verschillende waarden voor een variabele.

Zie Variabelen in ARM-sjabloon voor voorbeelden van het gebruik van variabelen.

Zie variabelen in Bicep.

Functions

In uw sjabloon kunt u uw eigen functies maken. Deze functies zijn beschikbaar voor gebruik in uw sjabloon. Normaal gesproken definieert u complexe expressies die u niet in de hele sjabloon wilt herhalen. U maakt de door de gebruiker gedefinieerde functies op basis van expressies en functies die worden ondersteund in sjablonen.

Bij het definiëren van een gebruikersfunctie gelden enkele beperkingen:

  • De functie heeft geen toegang tot variabelen.
  • De functie kan alleen parameters gebruiken die zijn gedefinieerd in de functie. Wanneer u de functie parameters binnen een door de gebruiker gedefinieerde functie gebruikt, bent u beperkt tot de parameters voor die functie.
  • De functie kan geen andere door de gebruiker gedefinieerde functies aanroepen.
  • De functie kan de verwijzingsfunctie niet gebruiken.
  • Parameters voor de functie kunnen geen standaardwaarden hebben.
"functions": [
  {
    "namespace": "<namespace-for-functions>",
    "members": {
      "<function-name>": {
        "parameters": [
          {
            "name": "<parameter-name>",
            "type": "<type-of-parameter-value>"
          }
        ],
        "output": {
          "type": "<type-of-output-value>",
          "value": "<function-return-value>"
        }
      }
    }
  }
],
Elementnaam Vereist Description
naamruimte Yes Naamruimte voor de aangepaste functies. Gebruik om naamconflicten met sjabloonfuncties te voorkomen.
functienaam Yes Naam van de aangepaste functie. Wanneer u de functie aanroept, combineert u de functienaam met de naamruimte. Als u bijvoorbeeld een functie met de naam uniqueName in de naamruimte contoso wilt aanroepen, gebruikt "[contoso.uniqueName()]"u .
parameternaam No Naam van de parameter die moet worden gebruikt in de aangepaste functie.
parameter-waarde No Type van de parameterwaarde. De toegestane typen en waarden zijn string, securestring, int, bool, object, secureObject en matrix.
uitvoertype Yes Type van de uitvoerwaarde. Uitvoerwaarden ondersteunen dezelfde typen als functie-invoerparameters.
uitvoerwaarde Yes Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd door de functie.

Zie Door de gebruiker gedefinieerde functies in de ARM-sjabloon voor voorbeelden van het gebruik van aangepaste functies.

In Bicep worden door de gebruiker gedefinieerde functies niet ondersteund. Bicep ondersteunt verschillende functies en operators.

Resources

In de resources sectie definieert u de resources die worden geïmplementeerd of bijgewerkt. U bent beperkt tot 800 resources in een sjabloon.

U definieert resources met de volgende structuur:

"resources": [
  {
    "condition": "<true-to-deploy-this-resource>",
    "type": "<resource-provider-namespace/resource-type-name>",
    "apiVersion": "<api-version-of-resource>",
    "name": "<name-of-the-resource>",
    "comments": "<your-reference-notes>",
    "location": "<location-of-resource>",
    "dependsOn": [
        "<array-of-related-resource-names>"
    ],
    "tags": {
        "<tag-name1>": "<tag-value1>",
        "<tag-name2>": "<tag-value2>"
    },
    "identity": {
      "type": "<system-assigned-or-user-assigned-identity>",
      "userAssignedIdentities": {
        "<resource-id-of-identity>": {}
      }
    },
    "sku": {
        "name": "<sku-name>",
        "tier": "<sku-tier>",
        "size": "<sku-size>",
        "family": "<sku-family>",
        "capacity": <sku-capacity>
    },
    "kind": "<type-of-resource>",
    "scope": "<target-scope-for-extension-resources>",
    "copy": {
        "name": "<name-of-copy-loop>",
        "count": <number-of-iterations>,
        "mode": "<serial-or-parallel>",
        "batchSize": <number-to-deploy-serially>
    },
    "plan": {
        "name": "<plan-name>",
        "promotionCode": "<plan-promotion-code>",
        "publisher": "<plan-publisher>",
        "product": "<plan-product>",
        "version": "<plan-version>"
    },
    "properties": {
        "<settings-for-the-resource>",
        "copy": [
            {
                "name": ,
                "count": ,
                "input": {}
            }
        ]
    },
    "resources": [
        "<array-of-child-resources>"
    ]
  }
]
Elementnaam Vereist Beschrijving
Voorwaarde No Booleaanse waarde die aangeeft of de resource wordt ingericht tijdens deze implementatie. Wanneer truewordt de resource gemaakt tijdens de implementatie. Wanneer falsewordt de resource overgeslagen voor deze implementatie. Zie voorwaarde.
type Yes Type van de resource. Deze waarde is een combinatie van de naamruimte van de resourceprovider en het resourcetype (zoals Microsoft.Storage/storageAccounts). Zie sjabloonreferentie om de beschikbare waarden te bepalen. Voor een onderliggende resource is de indeling van het type afhankelijk van het feit of het is genest in de bovenliggende resource of is gedefinieerd buiten de bovenliggende resource. Zie Setnaam en -type voor onderliggende resources.
apiVersion Yes Versie van de REST API die moet worden gebruikt voor het maken van de resource. Wanneer u een nieuwe sjabloon maakt, stelt u deze waarde in op de meest recente versie van de resource die u implementeert. Zolang de sjabloon werkt als nodig, kunt u dezelfde API-versie blijven gebruiken. Door dezelfde API-versie te blijven gebruiken, minimaliseert u het risico dat een nieuwe API-versie de werking van uw sjabloon wijzigt. U kunt de API-versie alleen bijwerken als u een nieuwe functie wilt gebruiken die in een latere versie wordt geïntroduceerd. Zie sjabloonreferentie om de beschikbare waarden te bepalen.
naam Yes De naam van de resource. De naam moet voldoen aan URI-onderdeelbeperkingen die zijn gedefinieerd in RFC3986. Azure-services die de resourcenaam beschikbaar maken voor externe partijen, valideren de naam om ervoor te zorgen dat het geen poging is om een andere identiteit te vervalsen. Voor een onderliggende resource is de indeling van de naam afhankelijk van of deze is genest in de bovenliggende resource of is gedefinieerd buiten de bovenliggende resource. Zie Setnaam en -type voor onderliggende resources.
opmerkingen No Uw notities voor het documenteren van de resources in uw sjabloon. Zie Opmerkingen in sjablonen voor meer informatie.
location Varieert Ondersteunde geografische locaties van de opgegeven resource. U kunt een van de beschikbare locaties selecteren, maar meestal is het logisch om een locatie te kiezen die zich dicht bij uw gebruikers bevindt. Meestal is het ook zinvol om resources die met elkaar communiceren in dezelfde regio te plaatsen. Voor de meeste resourcetypen is een locatie vereist, maar voor sommige typen (zoals een roltoewijzing) is geen locatie vereist. Zie Resourcelocatie instellen.
dependsOn No Resources die moeten worden geïmplementeerd voordat deze resource wordt geïmplementeerd. Resource Manager evalueert de afhankelijkheden tussen resources en implementeert deze in de juiste volgorde. Wanneer resources niet afhankelijk van elkaar zijn, worden ze parallel geïmplementeerd. De waarde kan een door komma's gescheiden lijst met resourcenamen of unieke resource-id's zijn. Alleen resources weergeven die in deze sjabloon zijn geïmplementeerd. Resources die niet in deze sjabloon zijn gedefinieerd, moeten al bestaan. Vermijd het toevoegen van onnodige afhankelijkheden, omdat deze uw implementatie kunnen vertragen en circulaire afhankelijkheden kunnen maken. Zie De volgorde voor het implementeren van resources in ARM-sjablonen definiëren voor hulp bij het instellen van afhankelijkheden.
tags No Tags die zijn gekoppeld aan de resource. Tags toepassen om resources in uw abonnement logisch te ordenen.
identity No Sommige resources ondersteunen beheerde identiteiten voor Azure-resources. Deze resources hebben een identiteitsobject op het hoofdniveau van de resourcedeclaratie. U kunt instellen of de identiteit door de gebruiker of het systeem is toegewezen. Geef voor door de gebruiker toegewezen identiteiten een lijst met resource-id's op voor de identiteiten. Stel de sleutel in op de resource-id en de waarde op een leeg object. Zie Beheerde identiteiten configureren voor Azure-resources op een Azure-VM met behulp van sjablonen voor meer informatie.
sku No Sommige resources staan waarden toe die de SKU definiëren om te implementeren. U kunt bijvoorbeeld het type redundantie voor een opslagaccount opgeven.
Soort No Sommige resources staan een waarde toe die het type resource definieert dat u implementeert. U kunt bijvoorbeeld het type Azure Cosmos DB-exemplaar opgeven dat moet worden gemaakt.
scope No De eigenschap scope is alleen beschikbaar voor extensieresourcetypen. Gebruik deze optie wanneer u een ander bereik opgeeft dan het implementatiebereik. Zie Bereik instellen voor extensieresources in ARM-sjablonen.
kopiëren No Als er meer dan één exemplaar nodig is, het aantal resources dat moet worden gemaakt. De standaardmodus is parallel. Geef de seriële modus op wanneer u niet wilt dat alle resources of de resources tegelijkertijd worden geïmplementeerd. Zie Meerdere exemplaren van resources maken in Azure Resource Manager voor meer informatie.
plannen No Sommige resources staan waarden toe die het plan definiëren dat moet worden geïmplementeerd. U kunt bijvoorbeeld de marketplace-installatiekopieën voor een virtuele machine opgeven.
properties No Resourcespecifieke configuratie-instellingen. De waarden voor de eigenschappen zijn hetzelfde als de waarden die u opgeeft in de hoofdtekst van de aanvraag voor de REST API-bewerking (PUT-methode) om de resource te maken. U kunt ook een kopieermatrix opgeven om meerdere exemplaren van een eigenschap te maken. Zie sjabloonreferentie om de beschikbare waarden te bepalen.
resources No Onderliggende resources die afhankelijk zijn van de resource die wordt gedefinieerd. Geef alleen resourcetypen op die zijn toegestaan volgens het schema van de bovenliggende resource. Afhankelijkheid van de bovenliggende resource wordt niet geïmpliceerd. U moet die afhankelijkheid expliciet definiëren. Zie Setnaam en -type voor onderliggende resources.

Als u de symbolische naam van Bicep in ARM JSON-sjablonen wilt ondersteunen, voegt languageVersion u toe met de versie 2.0 of nieuwer en wijzigt u de resourcedefinitie van een matrix in een object.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "<name-of-the-resource>": {
      ...
    }
  }
}

Zie Resources voor meer informatie.

Zie resources in Bicep.

Uitvoerwaarden

In de outputs sectie geeft u waarden op die worden geretourneerd vanuit de implementatie. Normaal gesproken retourneert u waarden van resources die zijn geïmplementeerd. U bent beperkt tot 64 uitvoerwaarden in een sjabloon.

In het volgende voorbeeld ziet u de structuur van een uitvoerdefinitie:

"outputs": {
  "<output-name>": {
    "condition": "<boolean-value-whether-to-output-value>",
    "type": "<type-of-output-value>",
    "value": "<output-value-expression>",
    "copy": {
      "count": <number-of-iterations>,
      "input": <values-for-the-variable>
    }
  }
}
Elementnaam Vereist Beschrijving
output-name Yes Naam van de uitvoerwaarde. Moet een geldige JavaScript-id zijn.
Voorwaarde No Booleaanse waarde die aangeeft of deze uitvoerwaarde wordt geretourneerd. Wanneer truewordt de waarde opgenomen in de uitvoer voor de implementatie. Wanneer falsewordt de uitvoerwaarde voor deze implementatie overgeslagen. Wanneer deze niet is opgegeven, is truede standaardwaarde .
type Yes Type van de uitvoerwaarde. Uitvoerwaarden ondersteunen dezelfde typen als sjablooninvoerparameters. Als u securestring opgeeft voor het uitvoertype, wordt de waarde niet weergegeven in de implementatiegeschiedenis en kan deze niet worden opgehaald uit een andere sjabloon. Als u een geheime waarde in meer dan één sjabloon wilt gebruiken, slaat u het geheim op in een Key Vault en verwijst u naar het geheim in het parameterbestand. Zie Azure Key Vault gebruiken om een beveiligde parameterwaarde door te geven tijdens de implementatie voor meer informatie.
waarde No Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd als uitvoerwaarde. Geef een waarde of kopie op.
kopiëren No Wordt gebruikt om meer dan één waarde voor een uitvoer te retourneren. Waarde opgeven of kopiëren. Zie Uitvoeriteratie in ARM-sjablonen voor meer informatie.

Zie de sjabloon Uitvoer in ARM voor voorbeelden van het gebruik van uitvoer.

Zie de uitvoer in Bicep.

Opmerkingen en metagegevens

U hebt een aantal opties voor het toevoegen van opmerkingen en metagegevens aan uw sjabloon.

Opmerkingen

Voor inline opmerkingen kunt u of /* ... */gebruiken//. Sla in Visual Studio Code de parameterbestanden met opmerkingen op als het bestandstype JSON met opmerkingen (JSONC). Anders krijgt u een foutbericht met de tekst 'Opmerkingen niet toegestaan in JSON'.

Notitie

Wanneer u Azure CLI gebruikt om sjablonen met opmerkingen te implementeren, gebruikt u versie 2.3.0 of hoger en geeft u de --handle-extended-json-format switch op.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2023-03-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[parameters('location')]", //defaults to resource group location
  "dependsOn": [ /* storage account and network interface must be deployed first */
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

In Visual Studio Code kan de Azure Resource Manager Tools-extensie automatisch een ARM-sjabloon detecteren en de taalmodus wijzigen. Als u Azure Resource Manager-sjabloon in de rechterbenedenhoek van Visual Studio Code ziet, kunt u de inline opmerkingen gebruiken. De inline opmerkingen worden niet meer gemarkeerd als ongeldig.

Schermopname van Visual Studio Code in azure Resource Manager-sjabloonmodus.

Zie opmerkingen in Bicep.

Metagegevens

U kunt bijna overal in uw sjabloon een metadata object toevoegen. Resource Manager negeert het object, maar de JSON-editor waarschuwt u mogelijk dat de eigenschap ongeldig is. Definieer in het -object de eigenschappen die u nodig hebt.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.0",
  "metadata": {
    "comments": "This template was developed for demonstration purposes.",
    "author": "Example Name"
  },

Voeg parametersvoor een metadata object met een description eigenschap toe.

"parameters": {
  "adminUsername": {
    "type": "string",
    "metadata": {
      "description": "User name for the Virtual Machine."
    }
  },

Wanneer u de sjabloon implementeert via de portal, wordt de tekst die u in de beschrijving opgeeft, automatisch gebruikt als tip voor die parameter.

Schermopname van de parametertip in Azure Portal.

Voor resourcesvoegt u een comments element of een metadata object toe. In het volgende voorbeeld ziet u zowel een comments -element als een metadata -object.

"resources": [
  {
    "type": "Microsoft.Storage/storageAccounts",
    "apiVersion": "2022-09-01",
    "name": "[format('{0}{1}', 'storage', uniqueString(resourceGroup().id))]",
    "comments": "Storage account used to store VM disks",
    "location": "[parameters('location')]",
    "metadata": {
      "comments": "These tags are needed for policy compliance."
    },
    "tags": {
      "Dept": "[parameters('deptName')]",
      "Environment": "[parameters('environment')]"
    },
    "sku": {
      "name": "Standard_LRS"
    },
    "kind": "Storage",
    "properties": {}
  }
]

Voor outputsvoegt u een metadata -object toe aan de uitvoerwaarde.

"outputs": {
  "hostname": {
    "type": "string",
    "value": "[reference(variables('publicIPAddressName')).dnsSettings.fqdn]",
    "metadata": {
      "comments": "Return the fully qualified domain name"
    }
  },

U kunt geen metadata object toevoegen aan door de gebruiker gedefinieerde functies.

Tekenreeksen met meerdere regels

U kunt een tekenreeks opsplitsen in meerdere regels. Zie bijvoorbeeld de location eigenschap en een van de opmerkingen in het volgende JSON-voorbeeld.

Notitie

Als u sjablonen met tekenreeksen met meerdere regels wilt implementeren, gebruikt u Azure PowerShell of Azure CLI. Gebruik voor CLI versie 2.3.0 of hoger en geef de switch op --handle-extended-json-format .

Tekenreeksen met meerdere regels worden niet ondersteund wanneer u de sjabloon implementeert via de Azure Portal, een DevOps-pijplijn of de REST API.

{
  "type": "Microsoft.Compute/virtualMachines",
  "apiVersion": "2023-03-01",
  "name": "[variables('vmName')]", // to customize name, change it in variables
  "location": "[
    parameters('location')
    ]", //defaults to resource group location
  /*
    storage account and network interface
    must be deployed first
  */
  "dependsOn": [
    "[resourceId('Microsoft.Storage/storageAccounts/', variables('storageAccountName'))]",
    "[resourceId('Microsoft.Network/networkInterfaces/', variables('nicName'))]"
  ],

Zie tekenreeksen met meerdere regels in Bicep.

languageVersion 2.0

Notitie

Het gebruik van een die languageVersion eindigt op -experimental wordt niet aanbevolen in productieomgevingen, omdat de experimentele functionaliteit op elk gewenst moment kan worden gewijzigd.

Notitie

De huidige versie van de Azure Resource Manager Tools-extensie voor Visual Studio Code herkent de verbeteringen in languageVersion 2.0 niet.

Als u languageVersion 2.0 wilt gebruiken, voegt u toe "languageVersion": "2.0" aan uw sjabloon:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "languageVersion": "2.0",
  "contentVersion": "1.0.0.0",
  "resources": {
    "<name-of-the-resource>": {
      ...
    }
  }
}

De verbeteringen en wijzigingen die worden geleverd met languageVersion 2.0:

  • Gebruik een symbolische naam in de ARM JSON-sjabloon. Zie Symbolische naam gebruiken voor meer informatie.
  • Gebruik symbolische naam in lussen voor het kopiëren van resources. Zie Symbolische naam gebruiken.
  • Gebruik symbolische naam in dependsOn matrices. Zie DependsOn en Afhankelijk van resources in een lus.
  • Gebruik symbolische naam in plaats van resourcenaam in de reference functie. Raadpleeg verwijzing.
  • Een references()-functie die een matrix van objecten retourneert die de runtimestatussen van een resourceverzameling vertegenwoordigen. Zie verwijzingen.
  • Gebruik de resourceeigenschap 'bestaande' om bestaande resources te declareren voor ARM om te lezen in plaats van een resource te implementeren. Zie Bestaande resources declareren.
  • Door de gebruiker gedefinieerde typen maken. Zie Typedefinitie.
  • Aanvullende validatiebeperkingen voor aggregatietypen die moeten worden gebruikt in parameters en uitvoer.
  • De standaardwaarde voor de expressionEvaluationOptions eigenschap is inner. De waarde outer is geblokkeerd. Zie Expressie-evaluatiebereik in geneste sjablonen.
  • De deployment functie retourneert een beperkte subset van eigenschappen. Zie implementatie.
  • Als implementatieresource wordt gebruikt in een symbolische naamimplementatie, gebruikt u apiVersion 2020-09-01 of hoger.
  • In de resourcedefinitie zijn dubbele escape-waarden binnen een expressie niet meer nodig. Zie Escape-tekens.

Volgende stappen