Za pomocą szablonów usługi Azure Resource Manager (szablonów usługi ARM) można wdrażać w grupach zasobów, subskrypcjach, grupach zarządzania lub dzierżawach. Ogólnie rzecz biorąc, funkcje szablonu usługi ARM działają tak samo dla wszystkich zakresów. W tym artykule opisano różnice, które istnieją dla niektórych funkcji w zależności od zakresu.
Obsługiwane funkcje
Podczas wdrażania w różnych zakresach należy wziąć pod uwagę pewne ważne zagadnienia:
Funkcja resourceGroup() jest obsługiwana w przypadku wdrożeń grup zasobów.
Funkcja subscription() jest obsługiwana w przypadku wdrożeń grup zasobów i subskrypcji.
Funkcje reference() i list() są obsługiwane dla wszystkich zakresów.
Użyj funkcji extensionResourceId() dla zasobów implementowanych jako rozszerzenia grupy zarządzania. Niestandardowe definicje zasad wdrażane w grupie zarządzania to rozszerzenia grupy zarządzania.
Aby uzyskać identyfikator zasobu dla niestandardowej definicji zasad na poziomie grupy zarządzania, użyj:
Użyj funkcji tenantResourceId(), aby uzyskać identyfikator zasobu wdrożonego w dzierżawie. Wbudowane definicje zasad to zasoby na poziomie dzierżawy. Podczas przypisywania wbudowanych zasad na poziomie grupy zarządzania użyj funkcji tenantResourceId.
Aby uzyskać identyfikator zasobu dla wbudowanej definicji zasad, użyj:
Podczas wdrażania w więcej niż jednym zakresie funkcje resourceGroup() i subscription() są rozpoznawane inaczej w zależności od sposobu określania szablonu. Po połączeniu z szablonem zewnętrznym funkcje zawsze rozpoznają zakres tego szablonu. Podczas zagnieżdżania szablonu w szablonie nadrzędnym użyj expressionEvaluationOptions właściwości , aby określić, czy funkcje są rozpoznawane dla grupy zasobów i subskrypcji szablonu nadrzędnego, czy szablonu zagnieżdżonego. Ustaw właściwość , aby inner rozpoznać zakres szablonu zagnieżdżonego. Ustaw właściwość , aby outer rozpoznać zakres szablonu nadrzędnego.
W poniższej tabeli przedstawiono, czy funkcje są rozpoznawane jako nadrzędna lub osadzona grupa zasobów i subskrypcja.
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
Azure CLI
az group create --name parentGroup --location southcentralus
az group create --name inlineGroup --location southcentralus
az group create --name linkedGroup --location southcentralus
az deployment group create \
--name ExampleDeployment \
--resource-group parentGroup \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crossresourcegroupproperties.json
Dane wyjściowe z poprzedniego przykładu to:
Output
"outputs": {
"defaultScopeRG": {
"type": "String",
"value": "Default scope resource group is parentGroup"
},
"innerScopeRG": {
"type": "String",
"value": "Inner scope resource group is inlineGroup"
},
"linkedRG": {
"type": "String",
"value": "Linked resource group is linkedGroup"
},
"parentRG": {
"type": "String",
"value": "Parent resource group is parentGroup"
}
},
Twórz kompleksowe rozwiązania na platformie Microsoft Azure, aby tworzyć usługi Azure Functions, implementować aplikacje internetowe i zarządzać nimi, opracowywać rozwiązania korzystające z usługi Azure Storage i nie tylko.
Znajdź dokumentację referencyjną dotyczącą wdrażania zasobów za pośrednictwem szablonów Bicep, azure Resource Manager i dostawcy narzędzia Terraform AzAPI. Pokazuje wszystkie typy zasobów.
Opisuje funkcje używane w szablonie usługi Azure Resource Manager (szablon usługi ARM) do pobierania wartości, pracy z ciągami i liczbami oraz pobierania informacji o wdrożeniu.