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 impostare l'ambito con Bicep durante la distribuzione in un gruppo di risorse. Per altre informazioni, vedere Comprendere l'ambito.
Risorse supportate
La maggior parte delle risorse può essere distribuita in un gruppo di risorse. Per un elenco delle risorse disponibili, consultare riferimento al modello di ARM.
Ambito set
Per impostazione predefinita, un file Bicep ha come ambito il gruppo di risorse. Se si vuole impostare l'ambito in modo esplicito, usare:
targetScope = 'resourceGroup'
Tuttavia, l'impostazione dell'ambito di destinazione sul gruppo di risorse non è necessaria, poiché tale ambito viene usato per impostazione predefinita.
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 parametro --resource-group
è il gruppo di risorse di destinazione.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Per informazioni più dettagliate sui comandi e sulle opzioni di distribuzione per la distribuzione di modelli di ARM, vedere:
- Distribuire le risorse con i modelli di Azure Resource Manager e l'interfaccia della riga di comando di Azure
- Distribuire le risorse con i modelli di Azure Resource Manager e Azure PowerShell
- Distribuire modelli di ARM da Cloud Shell
Ambiti di distribuzione
In un file Bicep tutte le risorse dichiarate con la resource
parola chiave devono essere distribuite nello stesso ambito della distribuzione. Per una distribuzione di un gruppo di risorse, significa che tutte le resource
dichiarazioni nel file Bicep devono essere distribuite nello stesso gruppo di risorse o come risorsa figlio o estensione di una risorsa nello stesso gruppo di risorse della distribuzione.
Tuttavia, questa restrizione non si applica alle existing
risorse. È possibile fare riferimento alle risorse esistenti in un ambito diverso rispetto alla distribuzione.
Per distribuire le risorse in più ambiti all'interno di una singola distribuzione, usare i moduli. La distribuzione di un modulo attiva una "distribuzione nidificata", consentendo di specificare come destinazione ambiti diversi. L'utente che distribuisce il file Bicep padre deve disporre delle autorizzazioni necessarie per avviare le distribuzioni in tali ambiti.
È possibile distribuire una risorsa dall'interno di un file Bicep con ambito gruppo di risorse negli ambiti seguenti:
- Lo stesso gruppo di risorse
- Altri gruppi di risorse nella stessa sottoscrizione
- Altri gruppi di risorse in altre sottoscrizioni
- Sottoscrizione
- Tenant
Ambito del gruppo di risorse di destinazione
Per distribuire le risorse nel gruppo di risorse di destinazione, aggiungerle al file Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Per un modello di esempio, vedere Distribuire nel gruppo di risorse di destinazione.
Ambito di un gruppo di risorse diverso
Per distribuire risorse in un gruppo di risorse che non è quello di destinazione, aggiungere un modulo. Usare la funzione resourceGroup per impostare la proprietà scope
per il modulo.
Se il gruppo di risorse si trova in una sottoscrizione diversa, specificare l'ID di sottoscrizione e il nome del gruppo di risorse. Se il gruppo di risorse si trova nella stessa sottoscrizione della distribuzione corrente, specificare solo il nome del gruppo di risorse. Se non si specifica una sottoscrizione nella funzione resourceGroup, verrà usata quella corrente.
L'esempio seguente illustra un modulo destinato a un gruppo di risorse in una sottoscrizione diversa.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
Nell'esempio seguente viene illustrato un modulo destinato a un gruppo di risorse nella stessa sottoscrizione.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
Per un modello di esempio, vedere Distribuire in più gruppi di risorse.
Ambito della sottoscrizione
Per distribuire le risorse in una sottoscrizione, aggiungere un modulo. Usare la funzione sottoscrizione per impostare la sua proprietà scope
.
Per eseguire la distribuzione nella sottoscrizione corrente, usare la funzione di sottoscrizione senza specificare alcun parametro.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Per eseguire la distribuzione in una sottoscrizione diversa, specificare l'ID di sottoscrizione come parametro nella funzione di sottoscrizione.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
Per un modello di esempio, vedere Creare un gruppo di risorse con Bicep.
Ambito del tenant
Per creare risorse nel tenant, aggiungere un modulo. Usare la funzione tenant per impostarne la proprietà scope
.
L'utente che distribuisce il modello deve avere l'accesso necessario per la distribuzione nel tenant.
L'esempio seguente include un modulo distribuito nel tenant.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
Anziché usare un modulo, è possibile impostare l'ambito su tenant()
per alcuni tipi di risorse. L'esempio seguente distribuisce un gruppo di gestione nel tenant.
param mgName string = 'mg-${uniqueString(newGuid())}'
// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2023-04-01' = {
scope: tenant()
name: mgName
properties: {}
}
output output string = 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.
@minLength(3)
@maxLength(11)
param storagePrefix string
@allowed([
'Standard_LRS'
'Standard_GRS'
'Standard_RAGRS'
'Standard_ZRS'
'Premium_LRS'
'Premium_ZRS'
'Standard_GZRS'
'Standard_RAGZRS'
])
param storageSKU string = 'Standard_LRS'
param location string = resourceGroup().location
var uniqueStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
resource stg 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: uniqueStorageName
location: location
sku: {
name: storageSKU
}
kind: 'StorageV2'
properties: {
supportsHttpsTrafficOnly: true
}
}
output storageEndpoint object = stg.properties.primaryEndpoints
Distribuire in più gruppi di risorse
È possibile eseguire la distribuzione in più gruppi di risorse in un singolo file Bicep.
Nota
Una singola distribuzione può interessare fino a 800 gruppi di risorse. 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 nelle 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
:
@maxLength(11)
param storagePrefix string
param firstStorageLocation string = resourceGroup().location
param secondResourceGroup string
param secondSubscriptionID string = ''
param secondStorageLocation string
var firstStorageName = '${storagePrefix}${uniqueString(resourceGroup().id)}'
var secondStorageName = '${storagePrefix}${uniqueString(secondSubscriptionID, secondResourceGroup)}'
module firstStorageAcct 'storage.bicep' = {
name: 'storageModule1'
params: {
storageLocation: firstStorageLocation
storageName: firstStorageName
}
}
module secondStorageAcct 'storage.bicep' = {
name: 'storageModule2'
scope: resourceGroup(secondSubscriptionID, secondResourceGroup)
params: {
storageLocation: secondStorageLocation
storageName: secondStorageName
}
}
Entrambi i moduli usano lo stesso file Bicep denominato storage.bicep.
param storageLocation string
param storageName string
resource storageAcct 'Microsoft.Storage/storageAccounts@2023-04-01' = {
name: storageName
location: storageLocation
sku: {
name: 'Standard_LRS'
}
kind: 'Storage'
properties: {}
}
Crea gruppo di risorse
Per informazioni sulla creazione di gruppi di risorse, vedere Creare un gruppo di risorse con Bicep.
Passaggi successivi
Per altre informazioni sugli altri ambiti, vedere: