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 true wordt de resource gemaakt tijdens de implementatie. Wanneer false wordt 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 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 true de 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.
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 parameters
voor 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.
Voor resources
voegt 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 outputs
voegt 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 isinner
. De waardeouter
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
- Zie de Azure-snelstartsjablonen voor volledige sjablonen voor verschillende soorten oplossingen.
- Zie ARM-sjabloonfuncties voor meer informatie over de functies die u vanuit een sjabloon kunt gebruiken.
- Zie Gekoppelde en geneste sjablonen gebruiken bij het implementeren van Azure-resources als u verschillende sjablonen wilt combineren tijdens de implementatie.
- Zie Aanbevolen procedures voor ARM-sjablonen voor aanbevelingen over het maken van sjablonen.
- Zie Veelgestelde vragen over ARM-sjablonen voor antwoorden op veelgestelde vragen.