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 resurstyper för tillägg finns i Resurstyper som utökar funktioner 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 den omfångsegenskap som är tillgänglig för tilläggsresurser när du tillämpar på en resurs.
Kommentar
Omfångsegenskapen är endast 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 hanteringsgrupper och klientdistributioner.
Använd i distributionsomfånget
Om du vill använda 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, hanteringsgrupp och 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 den distribueras till en resursgrupp låss resursgruppen.
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",
"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": {}
}
När den distribueras till en prenumeration tilldelar den 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
Använd egenskapen om du vill tillämpa en tilläggsresurs på scope
en resurs. Ange omfångsegenskapen till namnet på den resurs som du lägger till tillägget i. 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')]"
}
}
]
}
Egenskaperna resourceGroup och prenumeration tillåts endast för kapslade eller länkade distributioner. Dessa egenskaper är inte tillåtna för enskilda resurser. Använd kapslade eller länkade distributioner om du vill distribuera en tilläggsresurs med omfånget inställt på en resurs i en annan resursgrupp.
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 en privat ARM-mall med SAS-token.