ARM şablonlarında uzantı kaynaklarının kapsamını ayarlama
Uzantı kaynağı, başka bir kaynağı değiştiren bir kaynaktır. Örneğin, bir kaynağa rol atayabilirsiniz. Rol ataması bir uzantı kaynak türüdür.
Uzantı kaynak türlerinin tam listesi için bkz . Diğer kaynakların özelliklerini genişleten kaynak türleri.
Bu makalede, Azure Resource Manager şablonu (ARM şablonu) ile dağıtıldığında uzantı kaynak türünün kapsamının nasıl ayarlanacağı gösterilmektedir. Bir kaynağa uygulanırken uzantı kaynakları için kullanılabilen kapsam özelliğini açıklar.
Not
Kapsam özelliği yalnızca uzantı kaynak türleri için kullanılabilir. Uzantı türü olmayan bir kaynak türü için farklı bir kapsam belirtmek için iç içe veya bağlı dağıtım kullanın. Daha fazla bilgi için bkz . kaynak grubu dağıtımları, abonelik dağıtımları, yönetim grubu dağıtımları ve kiracı dağıtımları.
Dağıtım kapsamında uygula
Hedef dağıtım kapsamında bir uzantı kaynak türü uygulamak için, kaynağı herhangi bir kaynak türünde olduğu gibi şablonunuza eklersiniz. Kullanılabilir kapsamlar kaynak grubu, abonelik, yönetim grubu ve kiracıdır. Dağıtım kapsamı kaynak türünü desteklemelidir.
Aşağıdaki şablon bir kilit dağıtır.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
},
"resources": [
{
"type": "Microsoft.Authorization/locks",
"apiVersion": "2016-09-01",
"name": "rgLock",
"properties": {
"level": "CanNotDelete",
"notes": "Resource Group should not be deleted."
}
}
]
}
Bir kaynak grubuna dağıtıldığında, kaynak grubunu kilitler.
az deployment group create \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/locktargetscope.json"
Sonraki örnek bir rol atar.
{
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.1",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"metadata": {
"description": "The role assignment name"
}
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]"
},
"resources": [
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
],
"outputs": {}
}
Bir aboneliğe dağıtıldığında, rolü aboneliğe atar.
az deployment sub create \
--name demoSubDeployment \
--location centralus \
--template-uri "https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/scope/roletargetscope.json"
Kaynağa uygula
Bir kaynağa uzantı kaynağı uygulamak için özelliğini kullanın scope
. Kapsam özelliğini uzantıyı eklediğiniz kaynağın adına ayarlayın. Kapsam özelliği, uzantı kaynak türü için bir kök özelliktir.
Aşağıdaki örnek bir depolama hesabı oluşturur ve buna bir rol uygular.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"principalId": {
"type": "string",
"metadata": {
"description": "The principal to assign the role to"
}
},
"builtInRoleType": {
"type": "string",
"allowedValues": [
"Owner",
"Contributor",
"Reader"
],
"metadata": {
"description": "Built-in role to assign"
}
},
"roleNameGuid": {
"type": "string",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"Owner": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', '8e3af657-a8ff-443c-a75c-2fe8c4bcb635')]",
"Contributor": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'b24988ac-6180-42a0-ab88-20f7382dd24c')]",
"Reader": "[concat('/subscriptions/', subscription().subscriptionId, '/providers/Microsoft.Authorization/roleDefinitions/', 'acdd72a7-3385-48ef-bd42-f606fba81ae7')]",
"storageName": "[concat('storage', uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('storageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {}
},
{
"type": "Microsoft.Authorization/roleAssignments",
"apiVersion": "2020-10-01-preview",
"name": "[parameters('roleNameGuid')]",
"scope": "[concat('Microsoft.Storage/storageAccounts', '/', variables('storageName'))]",
"dependsOn": [
"[variables('storageName')]"
],
"properties": {
"roleDefinitionId": "[variables(parameters('builtInRoleType'))]",
"principalId": "[parameters('principalId')]"
}
}
]
}
resourceGroup ve abonelik özelliklerine yalnızca iç içe veya bağlı dağıtımlarda izin verilir. Bu özelliklere tek tek kaynaklarda izin verilmez. Kapsamı farklı bir kaynak grubundaki bir kaynağa ayarlanmış bir uzantı kaynağı dağıtmak istiyorsanız iç içe veya bağlı dağıtımları kullanın.
Sonraki adımlar
- Şablonunuzda parametreleri tanımlamayı anlamak için bkz . ARM şablonlarının yapısını ve söz dizimini anlama.
- Yaygın dağıtım hatalarını çözmeyle ilgili ipuçları için bkz . Azure Resource Manager ile ilgili yaygın Azure dağıtım hatalarını giderme.
- SAS belirteci gerektiren bir şablonu dağıtma hakkında bilgi için bkz . SAS belirteci ile özel ARM şablonu dağıtma.