ARM-sablonfüggvények az üzembehelyezési hatókörökben
Az Azure Resource Manager-sablonokkal (ARM-sablonokkal) üzembe helyezheti az erőforráscsoportokat, előfizetéseket, felügyeleti csoportokat vagy bérlőket. Az ARM-sablonfüggvények általában minden hatókör esetében ugyanúgy működnek. Ez a cikk a hatókörtől függően néhány függvény esetében fennálló különbségeket ismerteti.
Támogatott függvények
A különböző hatókörökben való üzembe helyezéskor fontos szempontokat kell figyelembe venni:
A resourceGroup() függvény támogatott az erőforráscsoport üzemelő példányai esetében.
Az subscription() függvény az erőforráscsoportok és az előfizetések üzemelő példányai esetében támogatott .
A reference() és a list() függvények minden hatókör esetében támogatottak .
A resourceId() használatával lekérheti az erőforráscsoportban üzembe helyezett erőforrás azonosítóját.
"subnet": { "id": "[resourceId(parameters('virtualNetworkResourceGroup'), 'Microsoft.Network/virtualNetworks/subnets', parameters('virtualNetworkName'), parameters('subnet1Name'))]" }
A subscriptionResourceId() függvénnyel lekérheti az előfizetésben üzembe helyezett erőforrás azonosítóját.
Ha például egy előfizetésben üzembe helyezett szabályzatdefiníció erőforrás-azonosítóját szeretné lekérni, használja a következőt:
"roleDefinitionId": "[subscriptionResourceId('Microsoft.Authorization/roleDefinitions', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
A felügyeleti csoport bővítményeként implementált erőforrásokhoz használja az extensionResourceId() függvényt. A felügyeleti csoportban üzembe helyezett egyéni szabályzatdefiníciók a felügyeleti csoport bővítményei.
Ha egy egyéni szabályzatdefiníció erőforrás-azonosítóját szeretné lekérni a felügyeleti csoport szintjén, használja a következőt:
"policyDefinitionId": "[extensionResourceId(variables('mgScope'), 'Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
A tenantResourceId() függvénnyel lekérheti a bérlőn üzembe helyezett erőforrás azonosítóját. A beépített szabályzatdefiníciók bérlőszintű erőforrások. Ha egy beépített szabályzatot rendel hozzá a felügyeleti csoport szintjén, használja a tenantResourceId függvényt.
Egy beépített szabályzatdefiníció erőforrás-azonosítójának lekéréséhez használja a következőt:
"policyDefinitionId": "[tenantResourceId('Microsoft.Authorization/policyDefinitions', parameters('policyDefinitionID'))]"
Függvényfeloldás hatókörökben
Ha több hatókörben helyezi üzembe az üzembe helyezést, a resourceGroup() és az subscription() függvények a sablon megadása alapján eltérően oldódnak fel. Amikor külső sablonra hivatkozik, a függvények mindig az adott sablon hatókörére lesznek feloldva. Amikor beágyaz egy sablont egy szülősablonba, a expressionEvaluationOptions
tulajdonság használatával adja meg, hogy a függvények feloldódnak-e a szülősablon vagy a beágyazott sablon erőforráscsoportjára és előfizetésére. Állítsa a tulajdonságot inner
a feloldáshoz a beágyazott sablon hatókörére. Állítsa a tulajdonságot úgy, outer
hogy a szülősablon hatókörére legyen feloldva.
Az alábbi táblázat bemutatja, hogy a függvények feloldhatók-e a szülő- vagy beágyazott erőforráscsoportra és előfizetésre.
Sablon típusa | Hatókör | Feloldás |
---|---|---|
Beágyazott | külső (alapértelmezett) | Szülő erőforráscsoport |
Beágyazott | Belső | Alerőforráscsoport |
Kapcsolódó | N/A | Alerőforráscsoport |
Az alábbi példasablon a következőket mutatja be:
- beágyazott sablon alapértelmezett (külső) hatókörrel
- beágyazott sablon belső hatókörrel
- csatolt sablon
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2022-09-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": "2022-09-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": "2022-09-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)]"
}
}
}
Az előző sablon teszteléséhez és az eredmények megtekintéséhez használja a PowerShellt vagy az Azure CLI-t.
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
Az előző példa kimenete a következő:
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
Következő lépések
- A paraméterek sablonban való definiálásának megismeréséhez lásd : Az ARM-sablonok szerkezetének és szintaxisának ismertetése.
- A gyakori üzembehelyezési hibák elhárításával kapcsolatos tippekért lásd: Gyakori Azure-beli üzembehelyezési hibák elhárítása az Azure Resource Manager.
- Az SAS-jogkivonatot igénylő sablonok üzembe helyezésével kapcsolatos információkért lásd: Privát ARM-sablon üzembe helyezése SAS-jogkivonattal.