Resourcedeclaratie in ARM-sjablonen
Als u een resource wilt implementeren via een AZURE Resource Manager-sjabloon (ARM-sjabloon), voegt u een resourcedeclaratie toe. Gebruik de resources
matrix in een JSON-sjabloon.
languageVersion 2.0 maakt een lijst met verbeteringen in ARM JSON-sjablonen, zoals het wijzigen van de declaratie van resources van een matrix in een object. De meeste voorbeelden die in dit artikel worden weergegeven, gebruiken resources
nog steeds matrix. Zie Symbolische naam gebruiken voor specifieke informatie over languageVersion 2.0.
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.
Tip
We raden Bicep aan omdat het dezelfde mogelijkheden biedt als ARM-sjablonen en de syntaxis gemakkelijker te gebruiken is. Zie resourcedeclaratie voor meer informatie.
U bent beperkt tot 800 resources in een sjabloon. Zie Sjabloonlimieten voor meer informatie.
Resourcetype en -versie instellen
Wanneer u een resource aan uw sjabloon toevoegt, begint u met het instellen van het resourcetype en de API-versie. Deze waarden bepalen de andere eigenschappen die beschikbaar zijn voor de resource.
In het volgende voorbeeld ziet u hoe u het resourcetype en de API-versie voor een opslagaccount instelt. In het voorbeeld wordt de volledige resourcedeclaratie niet weergegeven.
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
...
}
]
Resourcenaam instellen
Elke resource heeft een naam. Let bij het instellen van de resourcenaam op de regels en beperkingen voor resourcenamen.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
...
}
]
Locatie instellen
Voor veel resources is een locatie vereist. U kunt bepalen of de resource een locatie nodig heeft via intellisense of sjabloonreferenties. In het volgende voorbeeld wordt een locatieparameter toegevoegd die wordt gebruikt voor het opslagaccount.
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
...
}
]
Zie Resourcelocatie instellen in ARM-sjabloon voor meer informatie.
Tags instellen
U kunt tags toepassen op een resource tijdens de implementatie. Met tags kunt u uw geïmplementeerde resources logisch organiseren. Zie ARM-sjabloontags voor voorbeelden van de verschillende manieren waarop u de tags kunt opgeven.
Resourcespecifieke eigenschappen instellen
De voorgaande eigenschappen zijn algemeen voor de meeste resourcetypen. Nadat u deze waarden hebt ingesteld, moet u de eigenschappen instellen die specifiek zijn voor het resourcetype dat u implementeert.
Gebruik intellisense of sjabloonreferenties om te bepalen welke eigenschappen beschikbaar zijn en welke zijn vereist. In het volgende voorbeeld worden de resterende eigenschappen voor een opslagaccount ingesteld.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"minLength": 3,
"maxLength": 24
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"functions": [],
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2019-06-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS",
"tier": "Standard"
},
"kind": "StorageV2",
"properties": {
"accessTier": "Hot"
}
}
]
}
Symbolische naam gebruiken
In Bicep heeft elke resourcedefinitie een symbolische naam. De symbolische naam wordt gebruikt om te verwijzen naar de resource uit de andere onderdelen van uw Bicep-bestand. Als u symbolische naam in ARM JSON-sjablonen wilt ondersteunen, voegt languageVersion
u deze toe met de versie 2.0
en wijzigt u de resourcedefinitie van een matrix in een object. Wanneer languageVersion
deze is opgegeven voor een sjabloon, moet de symbolische naam worden opgegeven voor resources op hoofdniveau. Voorbeeld:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.ContainerService/managedClusters",
...
}
]
}
De voorgaande JSON kan in de volgende JSON worden geschreven:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"resources": {
"aks": {
"type": "Microsoft.ContainerService/managedClusters",
...
}
}
}
Symbolische namen zijn hoofdlettergevoelig. De toegestane tekens voor symbolische namen zijn letters, cijfers en _. Symbolische namen moeten uniek zijn in een sjabloon, maar kunnen overlappen met variabelenamen, parameternamen en uitvoernamen in een sjabloon. In het volgende voorbeeld heeft de symbolische naam van de opslagaccountresource dezelfde naam als de uitvoer.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"languageVersion": "2.0",
"contentVersion": "1.0.0.0",
"parameters": {
"storageAccountName": {
"type": "string",
"defaultValue": "[format('storage{0}', uniqueString(resourceGroup().id))]"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"resources": {
"myStorage": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "[parameters('storageAccountName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
}
},
"outputs": {
"myStorage":{
"type": "object",
"value": "[reference('myStorage')]"
}
}
}
De referentiefunctie kan de symbolische naam van een resource gebruiken, zoals wordt weergegeven in het vorige voorbeeld. De verwijzingsfunctie kan bijvoorbeeld reference(parameters('storageAccountName'))
de naam van een resource niet meer gebruiken.
Als de implementatieresource wordt gebruikt in een symbolische implementatie, gebruikt u apiVersion 2020-09-01
of hoger.
Bestaande resources declareren
Met languageVersion 2.0
een symbolische naam voor resourcedeclaratie kunt u bestaande resources declareren. Als een resourceeigenschap op het hoogste niveau wordt gebruikt, wordt ARM gelezen in plaats van "existing": true
een resource te implementeren, zoals wordt weergegeven in het volgende voorbeeld:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"languageVersion": "2.0",
"resources": {
"storageAccount": {
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2022-09-01",
"name": "storageacct",
"existing": true
}
},
"outputs": {
"saBlocksPlaintext": {
"type": "bool",
"value": "[ reference('storageAccount').supportsHttpsTrafficOnly]"
}
}
}
Bestaande resources hoeven geen andere eigenschappen te definiëren dan type
, apiVersion
en name
.
Volgende stappen
- Zie Voorwaardelijke implementatie in ARM-sjablonen als u een resource voorwaardelijk wilt implementeren.
- Zie De volgorde definiëren voor het implementeren van resources in ARM-sjablonen om resourceafhankelijkheden in te stellen.