Delen via


Informatie over de structuur en de syntaxis van ARM-sjablonen

In dit artikel wordt de structuur van een Azure Resource Manager-sjabloon (ARM-sjabloon) beschreven. De sjabloon bevat de verschillende secties van een sjabloon en de eigenschappen die beschikbaar zijn in deze 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 De structuur en syntaxis van Bicep-bestanden begrijpen 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": { }
}
Naam van element Vereist Beschrijving
$schema Ja 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 azure Resource Manager-hulpprogramma-extensie, gebruikt u de nieuwste versie voor resourcegroepimplementaties:
https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#

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

Voor abonnementsimplementaties gebruikt u:
https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#

Voor implementaties van beheergroepen gebruikt u:
https://schema.management.azure.com/schemas/2019-08-01/managementGroupDeploymentTemplate.json#

Voor tenantimplementaties gebruikt u:
https://schema.management.azure.com/schemas/2019-08-01/tenantDeploymentTemplate.json#
languageVersion Nee Taalversie van de sjabloon. Zie languageVersion 2.0 om de verbeteringen van languageVersion 2.0 weer te geven.
contentVersion Ja 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 Nee Een API-versie die fungeert als een verzameling API-versies voor resourcetypen. Gebruik deze waarde om te voorkomen dat u API-versies moet opgeven voor elke resource in de sjabloon. Wanneer u een API-profielversie opgeeft en geen API-versie voor het resourcetype opgeeft, 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 resources API-versies die in het profiel zijn gedefinieerd.

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

Elk element heeft eigenschappen die u kunt instellen. In dit artikel worden de secties van de sjabloon gedetailleerder 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>"
    }
  }
}
Naam van element Vereist Beschrijving
definitienaam Ja Naam van de typedefinitie. Moet een geldige JavaScript-id zijn.
type Ja Type van de typedefinitie. De toegestane typen en waarden zijn tekenreeksen, securestring, int, bool, object, secureObject en matrix. Zie Gegevenstypen in ARM-sjablonen.
allowedValues Nee Matrix met toegestane waarden voor de typedefinitie om ervoor te zorgen dat de juiste waarde is opgegeven.
minValue Nee De minimumwaarde voor int-typedefinities is inclusief.
maxValue Nee De maximumwaarde voor int-typedefinities is inclusief.
minLength Nee De minimale lengte voor tekenreeks-, veilige tekenreeks- en matrixtypedefinities is deze waarde inclusief.
maxLength Nee De maximale lengte voor tekenreeks-, veilige tekenreeks- en matrixtypedefinities is deze waarde inclusief.
voorvoegselitems Nee Het schema voor het valideren van het element van een matrix in dezelfde index.
items Nee 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 Nee Het schema voor het valideren van het object.
additionalProperties Nee 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 Nee Het schema dat moet worden toegepast op basis van een discriminerende eigenschap.
nullable Nee Een Booleaanse waarde die aangeeft dat de waarde null of weggelaten kan worden.
beschrijving Nee Beschrijving van de typedefinitie die wordt weergegeven aan gebruikers via de portal. Zie Opmerkingen in sjablonen voor meer informatie.

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

In Bicep raadpleegt u door de gebruiker gedefinieerde gegevenstypen.

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 door objecten te gebruiken 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>"
    }
  }
}
Naam van element Vereist Beschrijving
parameternaam Ja Naam van de parameter. Moet een geldige JavaScript-id zijn.
type Ja Type van de parameterwaarde. De toegestane typen en waarden zijn tekenreeksen, securestring, int, bool, object, secureObject en matrix. Zie Gegevenstypen in ARM-sjablonen.
standaardwaarde Nee Standaardwaarde voor de parameter, als er geen waarde is opgegeven voor de parameter.
allowedValues Nee Matrix met toegestane waarden voor de parameter om ervoor te zorgen dat de juiste waarde is opgegeven.
minValue Nee De minimumwaarde voor int-typeparameters, deze waarde is inclusief.
maxValue Nee De maximumwaarde voor int-typeparameters is inclusief.
minLength Nee De minimale lengte voor tekenreeks-, veilige tekenreeks- en matrixtypeparameters is deze waarde inclusief.
maxLength Nee De maximumlengte voor tekenreeks-, veilige tekenreeks- en matrixtypeparameters is inclusief.
voorvoegselitems Nee De typedefinitie voor het valideren van het element van een matrix in dezelfde index. prefixItems wordt alleen ondersteund in languageVersion 2.0.
items Nee 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 Nee Het schema voor het valideren van het object. properties wordt alleen ondersteund in languageVersion 2.0.
additionalProperties Nee 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 Nee Het schema dat moet worden toegepast op basis van een discriminerende eigenschap. discriminator wordt alleen ondersteund in languageVersion 2.0.
nullable Nee Een Booleaanse waarde die aangeeft dat de waarde null of weggelaten kan worden. nullable wordt alleen ondersteund in languageVersion 2.0.
beschrijving Nee 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 uw 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 gebruik van copy verschillende waarden voor een variabele.

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

Zie variabelen in Bicep.

Functies

In uw sjabloon kunt u uw eigen functies maken. Deze functies zijn beschikbaar voor gebruik in uw sjabloon. Normaal gesproken definieert u gecompliceerde expressies die u niet in uw 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 parametersfunctie 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>"
        }
      }
    }
  }
],
Naam van element Vereist Beschrijving
naamruimte Ja Naamruimte voor de aangepaste functies. Gebruik dit diagram om naamconflicten met sjabloonfuncties te voorkomen.
functienaam Ja Naam van de aangepaste functie. Wanneer u de functie aanroept, combineert u de functienaam met de naamruimte. Als u bijvoorbeeld een functie wilt aanroepen met de naamruimte uniqueName contoso, gebruikt u "[contoso.uniqueName()]".
parameternaam Nee De naam van de parameter die moet worden gebruikt in de aangepaste functie.
parameterwaarde Nee Type van de parameterwaarde. De toegestane typen en waarden zijn tekenreeksen, securestring, int, bool, object, secureObject en matrix.
uitvoertype Ja Type van de uitvoerwaarde. Uitvoerwaarden ondersteunen dezelfde typen als functie-invoerparameters.
uitvoerwaarde Ja Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd door de functie.

Zie Door de gebruiker gedefinieerde functies in 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>"
    ]
  }
]
Naam van element Vereist Beschrijving
voorwaarde Nee Booleaanse waarde die aangeeft of de resource tijdens deze implementatie wordt ingericht. Wanneer true, wordt de resource gemaakt tijdens de implementatie. Wanneer false, wordt de resource overgeslagen voor deze implementatie. Zie voorwaarde.
type Ja Het type resource. Deze waarde is een combinatie van de naamruimte van de resourceprovider en het resourcetype (zoals Microsoft.Storage/storageAccounts). Als u de beschikbare waarden wilt bepalen, raadpleegt u de sjabloonreferentie. Voor een onderliggende resource is de indeling van het type afhankelijk van of deze is genest binnen de bovenliggende resource of buiten de bovenliggende resource is gedefinieerd. Zie Setnaam en -type voor onderliggende resources.
apiVersion Ja De 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 nieuwste versie van de resource die u implementeert. Zolang de sjabloon werkt zoals nodig, moet u dezelfde API-versie blijven gebruiken. Door dezelfde API-versie te blijven gebruiken, minimaliseert u het risico dat een nieuwe API-versie verandert hoe uw sjabloon werkt. U kunt de API-versie alleen bijwerken als u een nieuwe functie wilt gebruiken die in een latere versie wordt geïntroduceerd. Als u de beschikbare waarden wilt bepalen, raadpleegt u de sjabloonreferentie.
naam Ja De naam van de resource. De naam moet voldoen aan de URI-componentbeperkingen die zijn gedefinieerd in RFC3986. Azure-services die de resourcenaam beschikbaar maken voor externe partijen, valideren de naam om ervoor te zorgen dat deze geen poging is om een andere identiteit te spoofen. Voor een onderliggende resource is de indeling van de naam afhankelijk van of deze is genest binnen de bovenliggende resource of buiten de bovenliggende resource is gedefinieerd. Zie Setnaam en -type voor onderliggende resources.
opmerkingen Nee Uw notities voor het documenteren van de resources in uw sjabloon. Zie Opmerkingen in sjablonen voor meer informatie.
locatie Varieert Ondersteunde geografische locaties van de opgegeven resource. U kunt een van de beschikbare locaties selecteren, maar meestal is het zinvol om een locatie te kiezen die zich dicht bij uw gebruikers bevindt. Meestal is het ook zinvol om resources te plaatsen die met elkaar communiceren in dezelfde regio. Voor de meeste resourcetypen is een locatie vereist, maar voor sommige typen (zoals een roltoewijzing) is geen locatie vereist. Zie Resourcelocatie instellen.
dependsOn Nee 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 zijn van elkaar, 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 ze uw implementatie kunnen vertragen en circulaire afhankelijkheden kunnen maken. Zie De volgorde definiëren voor het implementeren van resources in ARM-sjablonen voor hulp bij het instellen van afhankelijkheden.
tags Nee Tags die zijn gekoppeld aan de resource. Pas tags toe om resources logisch te ordenen in uw abonnement.
identity Nee 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 is toegewezen of aan 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 Nee Sommige resources staan waarden toe die de SKU definiëren om te implementeren. U kunt bijvoorbeeld het type redundantie voor een opslagaccount opgeven.
soort Nee Sommige resources bieden een waarde die het type resource definieert dat u implementeert. U kunt bijvoorbeeld het type Azure Cosmos DB-exemplaar opgeven dat moet worden gemaakt.
bereik Nee De bereikeigenschap is alleen beschikbaar voor extensieresourcetypen. Gebruik dit bij het opgeven van een bereik dat anders is dan het implementatiebereik. Zie Bereik instellen voor extensiebronnen in ARM-sjablonen.
kopiëren Nee Als er meer dan één exemplaar nodig is, moet u het aantal resources maken. De standaardmodus is parallel. Geef de seriële modus op wanneer u niet wilt dat alle resources tegelijk worden geïmplementeerd. Zie Verschillende exemplaren van resources maken in Azure Resource Manager voor meer informatie.
plan Nee Voor sommige resources zijn waarden toegestaan waarmee het plan wordt geïmplementeerd. U kunt bijvoorbeeld de marketplace-installatiekopieën voor een virtuele machine opgeven.
properties Nee Resourcespecifieke configuratie-instellingen. De waarden voor de eigenschappen zijn hetzelfde als de waarden die u opgeeft in de aanvraagbody voor de REST API-bewerking (PUT-methode) om de resource te maken. U kunt ook een kopieermatrix opgeven om verschillende exemplaren van een eigenschap te maken. Als u de beschikbare waarden wilt bepalen, raadpleegt u de sjabloonreferentie.
resources Nee Onderliggende resources die afhankelijk zijn van de resource die wordt gedefinieerd. Geef alleen resourcetypen op die zijn toegestaan door 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 bicep symbolische naam in ARM JSON-sjablonen wilt ondersteunen, voegt languageVersion u deze 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 de resources in Bicep.

Uitvoerwaarden

In de outputs sectie geeft u waarden op die worden geretourneerd uit de implementatie. Normaal gesproken retourneert u waarden uit resources die zijn geïmplementeerd. U bent beperkt tot 64 uitvoer 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>
    }
  }
}
Naam van element Vereist Beschrijving
uitvoernaam Ja Naam van de uitvoerwaarde. Moet een geldige JavaScript-id zijn.
voorwaarde Nee Booleaanse waarde die aangeeft of deze uitvoerwaarde wordt geretourneerd. Wanneer true, wordt de waarde opgenomen in de uitvoer voor de implementatie. Wanneer false, wordt de uitvoerwaarde voor deze implementatie overgeslagen. Wanneer deze niet is opgegeven, is truede standaardwaarde .
type Ja 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 Sleutelkluis en verwijst u naar het geheim in het parameterbestand. Zie Azure Key Vault gebruiken om tijdens de implementatie een veilige parameterwaarde door te geven.
waarde Nee Sjabloontaalexpressie die wordt geëvalueerd en geretourneerd als uitvoerwaarde. Geef waarde of kopie op.
kopiëren Nee Wordt gebruikt om meer dan één waarde voor een uitvoer te retourneren. Geef waarde of kopie op. Zie De uitvoeriteratie in ARM-sjablonen voor meer informatie.

Zie Uitvoer in arm-sjabloon 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 dit gebruiken // of /* ... */. Sla in Visual Studio Code de parameterbestanden op met opmerkingen als het JSON-bestandstype met opmerkingen (JSONC), anders krijgt u een foutbericht met de tekst 'Opmerkingen die niet zijn 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 Extensie Azure Resource Manager Tools automatisch een ARM-sjabloon detecteren en de taalmodus wijzigen. Als u De Azure Resource Manager-sjabloon in de rechterbenedenhoek van Visual Studio Code ziet, kunt u de inline opmerkingen gebruiken. De inlineopmerkingen zijn niet meer gemarkeerd als ongeldig.

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

In Bicep, zie opmerkingen.

Metagegevens

U kunt bijna overal in uw sjabloon een metadata object toevoegen. Resource Manager negeert het object, maar uw JSON-editor kan u waarschuwen dat de eigenschap niet geldig 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 parameterseen metadata object toe met een description eigenschap.

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

Bij het implementeren van de sjabloon via de portal wordt de tekst die u in de beschrijving opgeeft, automatisch gebruikt als tip voor die parameter.

Schermopname van parametertip in Azure Portal.

Voeg resourceseen 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": {}
  }
]

Voeg outputseen 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 object toevoegen aan door de metadata 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 --handle-extended-json-format switch op.

Tekenreeksen met meerdere regels worden niet ondersteund wanneer u de sjabloon implementeert via 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'))]"
  ],

In Bicep ziet u tekenreeksen met meerdere regels.

languageVersion 2.0

Notitie

Het gebruik van een languageVersion toepassing die eindigt -experimental , wordt niet aanbevolen in productieomgevingen, omdat 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 die zijn aangebracht in languageVersion 2.0 niet.

Als u languageVersion 2.0 wilt gebruiken, voegt u deze 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 symbolische naam in een 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 functie verwijzingen() die een matrix met objecten retourneert die de runtimestatussen van een resourceverzameling vertegenwoordigen. Zie verwijzingen.
  • Gebruik de resourceeigenschap 'bestaande' om bestaande resources voor ARM te declareren om te lezen in plaats van een resource te implementeren. Zie Bestaande resources declareren.
  • Door de gebruiker gedefinieerde typen maken. Zie Typedefinitie.
  • Aanvullende beperkingen voor validatie van statistische typen die moeten worden gebruikt in parameters en uitvoer.
  • De standaardwaarde voor de expressionEvaluationOptions eigenschap is inner. De waarde outer wordt geblokkeerd. Zie het evaluatiebereik voor expressies in geneste sjablonen.
  • De deployment functie retourneert een beperkte subset eigenschappen. Zie implementatie.
  • Als de implementatieresource wordt gebruikt in een symbolische implementatie, 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