Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
Questo articolo descrive come definire l'ambito della distribuzione in un gruppo di risorse. Si usa un modello di Azure Resource Manager per la distribuzione. L'articolo illustra anche come espandere l'ambito oltre il gruppo di risorse nell'operazione di distribuzione.
Suggerimento
È consigliabile usare Bicep perché offre le stesse funzionalità dei modelli arm e la sintassi è più facile da usare. Per altre informazioni, vedere Distribuzioni di gruppi di risorse.
Risorse supportate
La maggior parte delle risorse può essere distribuita in un gruppo di risorse. Per un elenco delle risorse disponibili, vedere riferimento al modello ARM.
Diagramma
Per i modelli, usare lo schema seguente:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
...
}
Per i file di parametri, usare:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
...
}
Comandi di distribuzione
Per eseguire la distribuzione in un gruppo di risorse, usare i comandi di distribuzione del gruppo di risorse.
Per l'interfaccia della riga di comando di Azure, usare az deployment group create. L'esempio seguente distribuisce un modello per creare un gruppo di risorse. Il gruppo di risorse specificato nel --resource-group
parametro è il gruppo di risorse di destinazione.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-uri "https://raw.githubusercontent.com/Azure/azure-quickstart-templates/master/quickstarts/microsoft.storage/storage-account-create/azuredeploy.json" \
--parameters storageAccountType=Standard_GRS
Per informazioni più dettagliate sui comandi e sulle opzioni di distribuzione per la distribuzione di modelli di ARM, vedi:
- Distribuire le risorse utilizzando modelli ARM e il portale Azure
- Distribuire le risorse con i modelli di Resource Manager e l'interfaccia della riga di comando di Azure
- Distribuire risorse con template di Resource Manager e Azure PowerShell
- Distribuire risorse con i modelli arm e l'API REST di Azure Resource Manager
- Usare un pulsante di distribuzione per distribuire i modelli dal repository GitHub
- Distribuire modelli di Resource Manager da Cloud Shell
Ambiti di distribuzione
Quando si esegue la distribuzione in un gruppo di risorse, è possibile distribuire le risorse in:
- il gruppo di risorse di destinazione dall'operazione
- altri gruppi di risorse nella stessa sottoscrizione o in altre sottoscrizioni
- qualsiasi sottoscrizione nel tenant
- tenant per il gruppo di risorse
Le uniche transizioni di ambito non consentite vengono eseguite dal gruppo di risorse al gruppo di gestione o dalla sottoscrizione al gruppo di gestione.
È possibile definire l'ambito di una risorsa di estensione a una destinazione diversa dalla destinazione di distribuzione.
L'utente che distribuisce il modello deve avere accesso all’ambito specificato.
Questa sezione mostra come specificare ambiti diversi. Questi ambiti diversi possono essere combinati in un singolo modello.
Ambito del gruppo di risorse di destinazione
Per distribuire le risorse nella risorsa di destinazione, aggiungere tali risorse alla sezione resources del modello.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
resource-group-resources
],
"outputs": {}
}
Per un modello di esempio, vedere Distribuire nel gruppo di risorse di destinazione.
Ambito del gruppo di risorse nella stessa sottoscrizione
Per distribuire le risorse in un gruppo di risorse diverso nella stessa sottoscrizione, aggiungere una distribuzione annidata e includere la resourceGroup
proprietà . Se non si specifica l'ID abbonamento o il gruppo di risorse, vengono usati l'abbonamento e il gruppo di risorse del modello padre. Prima di eseguire la distribuzione, tutti i gruppi di risorse devono esistere.
Nell'esempio seguente, la distribuzione nidificata è destinata a un gruppo di risorse denominato demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Per un modello di esempio, vedere Distribuire in più gruppi di risorse.
Ambito del gruppo di risorse in una sottoscrizione diversa
Per distribuire le risorse in un gruppo di risorse in una sottoscrizione diversa, aggiungere una distribuzione annidata e includere le proprietà subscriptionId
e resourceGroup
. Nell'esempio seguente, la distribuzione nidificata è destinata a un gruppo di risorse denominato demoResourceGroup
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"subscriptionId": "00000000-0000-0000-0000-000000000000",
"resourceGroup": "demoResourceGroup",
"properties": {
"mode": "Incremental",
"template": {
resource-group-resources
}
}
}
],
"outputs": {}
}
Per un modello di esempio, vedere Distribuire in più gruppi di risorse.
Ambito della sottoscrizione
Per distribuire le risorse in una sottoscrizione, aggiungere una distribuzione annidata e includere la subscriptionId
proprietà . La sottoscrizione può essere quella per il gruppo di risorse target, o qualsiasi altra sottoscrizione nel tenant. Impostare anche la location
proprietà per la distribuzione nidificata.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"subscriptionId": "0000000-0000-0000-0000-000000000000",
"properties": {
"mode": "Incremental",
"template": {
subscription-resources
}
}
}
],
"outputs": {}
}
Per un modello di esempio, vedere Creare un gruppo di risorse.
Ambito del tenant
Per creare risorse nel tenant, imposta scope
su /
. L'utente che distribuisce il modello deve avere l'accesso necessario per la distribuzione nel tenant.
Per usare una distribuzione annidata, imposta scope
e location
.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"resources": [
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedDeployment",
"location": "centralus",
"scope": "/",
"properties": {
"mode": "Incremental",
"template": {
tenant-resources
}
}
}
],
"outputs": {}
}
In alternativa, puoi impostare l'ambito su /
per alcuni tipi di risorse, ad esempio i gruppi di gestione.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"mgName": {
"type": "string",
"defaultValue": "[concat('mg-', uniqueString(newGuid()))]"
}
},
"resources": [
{
"type": "Microsoft.Management/managementGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('mgName')]",
"scope": "/",
"location": "eastus",
"properties": {}
}
],
"outputs": {
"output": {
"type": "string",
"value": "[parameters('mgName')]"
}
}
}
Per altre informazioni, vedere Gruppo di gestione.
Distribuire nel gruppo di risorse di destinazione
Per distribuire le risorse nel gruppo di risorse di destinazione, definire tali risorse nella sezione resources
del modello. Il modello seguente crea un account di archiviazione nel gruppo di risorse specificato nell'operazione di distribuzione.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"minLength": 3,
"maxLength": 11
},
"storageSKU": {
"type": "string",
"defaultValue": "Standard_LRS",
"allowedValues": [
"Standard_LRS",
"Standard_GRS",
"Standard_RAGRS",
"Standard_ZRS",
"Premium_LRS",
"Premium_ZRS",
"Standard_GZRS",
"Standard_RAGZRS"
]
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"uniqueStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-09-01",
"name": "[variables('uniqueStorageName')]",
"location": "[parameters('location')]",
"sku": {
"name": "[parameters('storageSKU')]"
},
"kind": "StorageV2",
"properties": {
"supportsHttpsTrafficOnly": true
}
}
],
"outputs": {
"storageEndpoint": {
"type": "object",
"value": "[reference(variables('uniqueStorageName')).primaryEndpoints]"
}
}
}
Distribuire in più gruppi di risorse
È possibile eseguire la distribuzione in più di un gruppo di risorse in un singolo modello di Resource Manager. Per specificare come destinazione un gruppo di risorse diverso da quello per il modello padre, usare un modello annidato o collegato. All'interno del tipo di risorsa di distribuzione specificare i valori per l'ID sottoscrizione e il gruppo di risorse in cui si vuole distribuire il modello annidato. I gruppi di risorse possono esistere in sottoscrizioni diverse.
Annotazioni
È possibile distribuire in 800 gruppi di risorse in una singola distribuzione. Questa limitazione significa in genere che è possibile eseguire la distribuzione in un solo gruppo di risorse specificato per il modello padre e in un massimo di 799 gruppi di risorse nelle distribuzioni annidate o collegate. Tuttavia, se il modello padre contiene solo modelli annidati o collegati e non distribuisce alcuna risorsa, è possibile includere fino a 800 gruppi di risorse in distribuzioni annidate o collegate.
L'esempio seguente consente di distribuire due account di archiviazione. Il primo account di archiviazione viene distribuito nel gruppo di risorse specificato nell'operazione di distribuzione. Il secondo account di archiviazione viene distribuito nel gruppo di risorse specificato nei parametri secondResourceGroup
e secondSubscriptionID
:
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"secondResourceGroup": {
"type": "string"
},
"secondSubscriptionID": {
"type": "string",
"defaultValue": ""
},
"secondStorageLocation": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"firstStorageName": "[concat(parameters('storagePrefix'), uniqueString(resourceGroup().id))]",
"secondStorageName": "[concat(parameters('storagePrefix'), uniqueString(parameters('secondSubscriptionID'), parameters('secondResourceGroup')))]"
},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('firstStorageName')]",
"location": "[resourceGroup().location]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
},
{
"type": "Microsoft.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "nestedTemplate",
"resourceGroup": "[parameters('secondResourceGroup')]",
"subscriptionId": "[parameters('secondSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-04-01",
"name": "[variables('secondStorageName')]",
"location": "[parameters('secondStorageLocation')]",
"sku": {
"name": "Standard_LRS"
},
"kind": "Storage",
"properties": {
}
}
]
},
"parameters": {}
}
}
]
}
Se si imposta resourceGroup
sul nome di un gruppo di risorse che non esiste, la distribuzione ha esito negativo.
Per testare il modello precedente e visualizzare i risultati, usare PowerShell o l'interfaccia della riga di comando di Azure.
Per distribuire due account di archiviazione in due gruppi di risorse nella stessa sottoscrizione, usare:
firstRG="primarygroup"
secondRG="secondarygroup"
az group create --name $firstRG --location southcentralus
az group create --name $secondRG --location eastus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=tfstorage secondResourceGroup=$secondRG secondStorageLocation=eastus
Per distribuire due account di archiviazione in due sottoscrizioni, usare:
firstRG="primarygroup"
secondRG="secondarygroup"
firstSub="<first-subscription-id>"
secondSub="<second-subscription-id>"
az account set --subscription $secondSub
az group create --name $secondRG --location eastus
az account set --subscription $firstSub
az group create --name $firstRG --location southcentralus
az deployment group create \
--name ExampleDeployment \
--resource-group $firstRG \
--template-uri https://raw.githubusercontent.com/Azure/azure-docs-json-samples/master/azure-resource-manager/crosssubscription.json \
--parameters storagePrefix=storage secondResourceGroup=$secondRG secondStorageLocation=eastus secondSubscriptionID=$secondSub
Crea gruppo di risorse
Da una distribuzione di un gruppo di risorse, è possibile passare al livello di una sottoscrizione e creare un gruppo di risorse. Il modello seguente distribuisce un account di archiviazione nel gruppo di risorse di destinazione e crea un nuovo gruppo di risorse nella sottoscrizione specificata.
{
"$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {
"storagePrefix": {
"type": "string",
"maxLength": 11
},
"newResourceGroupName": {
"type": "string"
},
"nestedSubscriptionID": {
"type": "string"
},
"location": {
"type": "string",
"defaultValue": "[resourceGroup().location]"
}
},
"variables": {
"storageName": "[concat(parameters('storagePrefix'), 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.Resources/deployments",
"apiVersion": "2021-04-01",
"name": "demoSubDeployment",
"location": "westus",
"subscriptionId": "[parameters('nestedSubscriptionID')]",
"properties": {
"mode": "Incremental",
"template": {
"$schema": "https://schema.management.azure.com/schemas/2018-05-01/subscriptionDeploymentTemplate.json#",
"contentVersion": "1.0.0.0",
"parameters": {},
"variables": {},
"resources": [
{
"type": "Microsoft.Resources/resourceGroups",
"apiVersion": "2021-04-01",
"name": "[parameters('newResourceGroupName')]",
"location": "[parameters('location')]",
"properties": {}
}
],
"outputs": {}
}
}
}
]
}
Passaggi successivi
- Per un esempio di distribuzione delle impostazioni dell'area di lavoro per Microsoft Defender for Cloud, vedere deployASCwithWorkspaceSettings.json.