Distribuzioni di gruppi di risorse con file Bicep
Questo articolo descrive come impostare l'ambito con Bicep durante la distribuzione in un gruppo di risorse.
Risorse supportate
La maggior parte delle risorse può essere distribuita in un gruppo di risorse. Per un elenco delle risorse disponibili, vedi riferimento al modello di ARM.
Ambito set
Per impostazione predefinita, un file Bicep ha come ambito il gruppo di risorse. Se si vuole impostare in modo esplicito l'ambito, usare:
targetScope = 'resourceGroup'
Tuttavia, l'impostazione dell'ambito di destinazione sul gruppo di risorse non è necessaria perché tale ambito viene usato per impostazione predefinita.
Comandi di distribuzione
Per eseguire la distribuzione in un gruppo di risorse, usa i comandi di distribuzione del gruppo di risorse.
Per l'interfaccia della riga di comando di Azure, usa az deployment group create. L'esempio seguente distribuisce un modello per creare un gruppo di risorse. Il gruppo di risorse che specifichi 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, vedi:
- 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
Quando esegui la distribuzione in un gruppo di risorse, puoi distribuire le risorse in:
- gruppo di risorse di destinazione per l'operazione di distribuzione
- altri gruppi di risorse nella stessa sottoscrizione o in altre sottoscrizioni
- qualsiasi sottoscrizione nel tenant
- tenant per il gruppo di risorse
È possibile definire l'ambito di una risorsa di estensione in 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. Puoi combinare questi ambiti diversi in un singolo modello.
Ambito del gruppo di risorse di destinazione
Per distribuire le risorse nel gruppo di risorse di destinazione, aggiungere tali risorse al file Bicep.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
Per un modello di esempio, vedi Distribuire nel gruppo di risorse di destinazione.
Ambito di un gruppo di risorse diverso
Per distribuire le risorse in un gruppo di risorse che non è il gruppo di risorse di destinazione, aggiungere un modulo. Usare la funzione resourceGroup per impostare la scope
proprietà per il modulo.
Se il gruppo di risorse si trova in una sottoscrizione diversa, specificare l'ID 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, viene usata la sottoscrizione 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, vedi Distribuire in più gruppi di risorse.
Ambito della sottoscrizione
Per distribuire le risorse in una sottoscrizione, aggiungere un modulo. Usare la funzione di sottoscrizione per impostarne la scope
proprietà.
Per eseguire la distribuzione nella sottoscrizione corrente, usare la funzione di sottoscrizione senza un 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 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 obbligatorio 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 ulteriori informazioni, vedi Gruppo di gestione.
Distribuire nel gruppo di risorse di destinazione
Per distribuire le risorse nel gruppo di risorse di destinazione, definisci 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 risorse, è 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: