Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Met ARM-sjablonen (Azure Resource Manager) kunt u implementeren in resourcegroepen, abonnementen, beheergroepen of tenants. Over het algemeen werken ARM-sjabloonfuncties hetzelfde voor alle bereiken. In dit artikel worden de verschillen beschreven die bestaan voor sommige functies en hoe deze verschillen afhankelijk zijn van het bereik.
Ondersteunde functies
Houd rekening met het volgende bij het implementeren naar verschillende bereiken:
De
resourceGroup()functie wordt ondersteund voor resourcegroepimplementaties.De
subscription()functie wordt ondersteund voor resourcegroep- en abonnementsimplementaties.De
reference()functies list () worden ondersteund voor alle bereiken.Hiermee
resourceId()haalt u de id op voor een resource die is geïmplementeerd in de resourcegroep."subnet": { "id": "[resourceId(parameters('virtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnet1Name'))]" }Gebruik de
subscriptionResourceId()functie om de id op te halen voor een resource die is geïmplementeerd in het abonnement.Als u bijvoorbeeld de resource-id voor een beleidsdefinitie wilt ophalen die is geïmplementeerd in een abonnement, gebruikt u:
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"Gebruik de
extensionResourceId()functie voor resources die worden geïmplementeerd als extensies van de beheergroep. Aangepaste beleidsdefinities die in de beheergroep worden geïmplementeerd, zijn extensies van de beheergroep.Als u de resource-id voor een aangepaste beleidsdefinitie op beheergroepsniveau wilt ophalen, gebruikt u:
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"Gebruik de
tenantResourceId()functie om de id op te halen voor een resource die is geïmplementeerd in de tenant. Ingebouwde beleidsdefinities zijn resources op tenantniveau. Wanneer u een ingebouwd beleid toewijst op beheergroepsniveau, gebruikt u detenantResourceIdfunctie.Als u de resource-id voor een ingebouwde beleidsdefinitie wilt ophalen, gebruikt u:
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
Functieresolutie in omgevingen
Wanneer u implementeert in meer dan één bereik, worden de resourceGroup() en subscription() functies anders omgezet op basis van de manier waarop u de sjabloon opgeeft. Wanneer u een koppeling maakt naar een externe sjabloon, worden de functies altijd terugverwezen naar het bereik van die sjabloon. Wanneer u een sjabloon in een bovenliggende sjabloon nest, gebruikt u de expressionEvaluationOptions eigenschap om op te geven of de functies worden omgezet in de resourcegroep en het abonnement voor de bovenliggende sjabloon of de geneste sjabloon. Stel de eigenschap in op inner om deze binnen de scope van de geneste sjabloon op te nemen. Stel de eigenschap in op outer om te verwijzen naar het bereik van de bovenliggende sjabloon.
In de volgende tabel ziet u of de functies worden omgezet in de bovenliggende of ingesloten resourcegroep en het abonnement.
| Sjabloontype | Omvang | Resolutie / Besluit |
|---|---|---|
| Geneste | buitenste (standaard) | Hoofd-resourcegroep |
| Geneste | binnenkant | Subresourcegroep |
| Gekoppelde | Niet van toepassing. | Subresourcegroep |
In de volgende voorbeeldsjabloon ziet u een:
- Geneste sjabloon met een standaardbereik (
outer). - Geneste sjabloon met een
innerbereik. - Gekoppelde sjabloon.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "defaultScopeTemplate",
"resourceGroup": "inlineGroup",
"properties": {
"mode": "Incremental",
"parameters": {},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"resourceGroupOutput": {
"type": "string",
"value": "[resourceGroup().name]"
}
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "innerScopeTemplate",
"resourceGroup": "inlineGroup",
"properties": {
"expressionEvaluationOptions": {
"scope": "inner"
},
"mode": "Incremental",
"parameters": {},
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [],
"outputs": {
"resourceGroupOutput": {
"type": "string",
"value": "[resourceGroup().name]"
}
}
}
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2025-04-01",
"name": "linkedTemplate",
"resourceGroup": "linkedGroup",
"properties": {
"mode": "Incremental",
"parameters": {},
"templateLink": {
"contentVersion": "1.0.0.0",
"uri": "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/resourcegroupname.json"
}
}
}
],
"outputs": {
"parentRG": {
"type": "string",
"value": "[format('Parent resource group is {0}', resourceGroup().name)]"
},
"defaultScopeRG": {
"type": "string",
"value": "[format('Default scope resource group is {0}', reference('defaultScopeTemplate').outputs.resourceGroupOutput.value)]"
},
"innerScopeRG": {
"type": "string",
"value": "[format('Inner scope resource group is {0}', reference('innerScopeTemplate').outputs.resourceGroupOutput.value)]"
},
"linkedRG": {
"type": "string",
"value": "[format('Linked resource group is {0}', reference('linkedTemplate').outputs.resourceGroupOutput.value)]"
}
}
}
Als u de voorgaande sjabloon wilt testen en de resultaten wilt bekijken, gebruikt u PowerShell of de Azure CLI.
New-AzResourceGroup -Name parentGroup -Location southcentralus
New-AzResourceGroup -Name inlineGroup -Location southcentralus
New-AzResourceGroup -Name linkedGroup -Location southcentralus
New-AzResourceGroupDeployment `
-ResourceGroupName parentGroup `
-TemplateUri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crossresourcegroupproperties.json
De uitvoer uit het voorgaande voorbeeld is:
Name Type Value
=============== ========================= ==========
parentRG String Parent resource group is parentGroup
defaultScopeRG String Default scope resource group is parentGroup
innerScopeRG String Inner scope resource group is inlineGroup
linkedRG String Linked resource group is linkedgroup
Volgende stappen
- Zie de structuur en syntaxis van ARM-sjablonen voor meer informatie over het definiëren van parameters in uw sjabloon.
- Zie hoe u veelvoorkomende implementatiefouten met Azure Resource Manager kunt oplossen voor tips over het oplossen van veelvoorkomende implementatiefouten in Azure.
- Zie hoe u een privé-ARM-sjabloon implementeert met een SAS-token voor informatie over het implementeren van een sjabloon waarvoor een SAS-token is vereist.