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 true de 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.
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 parameters
een 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.
Voeg resources
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": {}
}
]
Voeg outputs
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 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 isinner
. De waardeouter
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.
Als u een van de volgende Bicep-functies gebruikt, wordt taalversie 2.0-code automatisch gegenereerd:
- door de gebruiker gedefinieerde typen
- door de gebruiker gedefinieerde functies
- compilatietijdimport
- experimentele functies
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 om verschillende sjablonen tijdens de implementatie te combineren.
- Zie best practices voor ARM-sjablonen voor aanbevelingen over het maken van sjablonen.
- Zie veelgestelde vragen over ARM-sjablonen voor antwoorden op veelgestelde vragen.