Ange omfång för tilläggsresurser i ARM-mallar
En tilläggsresurs är en resurs som ändrar en annan resurs. Du kan till exempel tilldela en roll till en resurs. Rolltilldelningen är en tilläggsresurstyp.
En fullständig lista över tilläggsresurstyper finns i Resurstyper som utökar funktionerna för andra resurser.
Den här artikeln visar hur du anger omfånget för en tilläggsresurstyp när den distribueras med en Azure Resource Manager mall (ARM-mall). Den beskriver omfångsegenskapen som är tillgänglig för tilläggsresurser när den tillämpas på en resurs.
Anteckning
Omfångsegenskapen är bara tillgänglig för tilläggsresurstyper. Om du vill ange ett annat omfång för en resurstyp som inte är en tilläggstyp använder du en kapslad eller länkad distribution. Mer information finns i distributioner av resursgrupper, prenumerationsdistributioner, distributioner av hanteringsgruppoch klientdistributioner.
Tillämpa i distributionsomfång
Om du vill tillämpa en tilläggsresurstyp i måldistributionsomfånget lägger du till resursen i mallen, precis som med alla resurstyper. De tillgängliga omfången är resursgrupp, prenumeration, hanteringsgruppoch klientorganisation. Distributionsomfånget måste ha stöd för resurstypen.
Följande mall distribuerar ett lås.
{
"$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."
}
}
]
}
När resursgruppen distribueras till en resursgrupp låses den.
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"
I nästa exempel tilldelas en roll.
{
"$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",
"defaultValue": "[newGuid()]",
"metadata": {
"description": "A new GUID used to identify the role assignment"
}
}
},
"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": {}
}
När den distribueras till en prenumeration tilldelas rollen till prenumerationen.
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"
Tillämpa på resurs
Om du vill tillämpa en tilläggsresurs på en resurs använder du scope egenskapen . Ange omfångsegenskapen till namnet på den resurs som du lägger till tillägget till. Omfångsegenskapen är en rotegenskap för tilläggsresurstypen.
I följande exempel skapas ett lagringskonto och en roll tillämpas på det.
{
"$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')]"
}
}
]
}
Nästa steg
- Information om hur du definierar parametrar i mallen finns i Förstå strukturen och syntaxen för ARM-mallar.
- Tips om hur du löser vanliga distributionsfel finns i Felsöka vanliga Azure-distributionsfel med Azure Resource Manager.
- Information om hur du distribuerar en mall som kräver en SAS-token finns i Distribuera privat ARM-mall med SAS-token.