Resursgruppsdistributioner med Bicep-filer
Den här artikeln beskriver hur du anger omfång med Bicep när du distribuerar till en resursgrupp.
Resurser som stöds
De flesta resurser kan distribueras till en resursgrupp. En lista över tillgängliga resurser finns i ARM-mallreferens.
Ange omfång
Som standard är en Bicep-fil begränsad till resursgruppen. Om du uttryckligen vill ange omfånget använder du:
targetScope = 'resourceGroup'
Men det är inte nödvändigt att ange målomfånget till resursgrupp eftersom det omfånget används som standard.
Distributionskommandon
Om du vill distribuera till en resursgrupp använder du distributionskommandona för resursgrupper.
För Azure CLI använder du az deployment group create. I följande exempel distribueras en mall för att skapa en resursgrupp. Den resursgrupp som du anger i parametern --resource-group
är målresursgruppen.
az deployment group create \
--name demoRGDeployment \
--resource-group ExampleGroup \
--template-file main.bicep \
--parameters storageAccountType=Standard_GRS
Mer detaljerad information om distributionskommandon och alternativ för distribution av ARM-mallar finns i:
- Distribuera resurser med ARM-mallar och Azure CLI
- Distribuera resurser med ARM-mallar och Azure PowerShell
- Distribuera ARM-mallar från Cloud Shell
Distributionsomfång
När du distribuerar till en resursgrupp kan du distribuera resurser till:
- målresursgruppen för distributionsåtgärden
- andra resursgrupper i samma prenumeration eller andra prenumerationer
- valfri prenumeration i klientorganisationen
- klientorganisationen för resursgruppen
En tilläggsresurs kan begränsas till ett annat mål än distributionsmålet.
Användaren som distribuerar mallen måste ha åtkomst till det angivna omfånget.
Det här avsnittet visar hur du anger olika omfång. Du kan kombinera dessa olika omfång i en enda mall.
Omfång till målresursgrupp
Om du vill distribuera resurser till målresursgruppen lägger du till dessa resurser i Bicep-filen.
// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2023-04-01' = {
...
}
En exempelmall finns i Distribuera till målresursgrupp.
Omfång för olika resursgrupper
Om du vill distribuera resurser till en resursgrupp som inte är målresursgruppen lägger du till en modul. Använd funktionen resourceGroup för att ange egenskapen för modulenscope
.
Om resursgruppen finns i en annan prenumeration anger du prenumerations-ID och namnet på resursgruppen. Om resursgruppen finns i samma prenumeration som den aktuella distributionen anger du bara namnet på resursgruppen. Om du inte anger någon prenumeration i funktionen resourceGroup används den aktuella prenumerationen.
I följande exempel visas en modul som riktar sig mot en resursgrupp i en annan prenumeration.
param otherResourceGroup string
param otherSubscriptionID string
// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
name: 'otherSubAndRG'
scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}
I nästa exempel visas en modul som riktar sig till en resursgrupp i samma prenumeration.
param otherResourceGroup string
// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
name: 'otherRG'
scope: resourceGroup(otherResourceGroup)
}
En exempelmall finns i Distribuera till flera resursgrupper.
Omfång för prenumeration
Om du vill distribuera resurser till en prenumeration lägger du till en modul. Använd prenumerationsfunktionen för att ange dess scope
egenskap.
Om du vill distribuera till den aktuella prenumerationen använder du prenumerationsfunktionen utan parameter.
// module deployed at subscription level
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription()
}
Om du vill distribuera till en annan prenumeration anger du det prenumerations-ID:t som en parameter i prenumerationsfunktionen.
param otherSubscriptionID string
// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
name: 'deployToSub'
scope: subscription(otherSubscriptionID)
}
En exempelmall finns i Skapa resursgrupp med Bicep.
Omfång för klientorganisation
Om du vill skapa resurser i klientorganisationen lägger du till en modul. Använd klientfunktionen för att ange dess scope
egenskap.
Användaren som distribuerar mallen måste ha den åtkomst som krävs för att distribuera i klientorganisationen.
I följande exempel ingår en modul som distribueras till klientorganisationen.
// module deployed at tenant level
module exampleModule 'module.bicep' = {
name: 'deployToTenant'
scope: tenant()
}
I stället för att använda en modul kan du ange omfånget till tenant()
för vissa resurstyper. I följande exempel distribueras en hanteringsgrupp i klientorganisationen.
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
Mer information finns i Hanteringsgrupp.
Distribuera till målresursgrupp
Om du vill distribuera resurser i målresursgruppen definierar du dessa resurser i resources
avsnittet i mallen. Följande mall skapar ett lagringskonto i resursgruppen som anges i distributionsåtgärden.
@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
Distribuera till flera resursgrupper
Du kan distribuera till mer än en resursgrupp i en enda Bicep-fil.
Kommentar
Du kan distribuera till 800 resursgrupper i en enda distribution. Den här begränsningen innebär vanligtvis att du kan distribuera till en resursgrupp som angetts för den överordnade mallen och upp till 799 resursgrupper i kapslade eller länkade distributioner. Men om den överordnade mallen endast innehåller kapslade eller länkade mallar och inte själv distribuerar några resurser kan du inkludera upp till 800 resursgrupper i kapslade eller länkade distributioner.
I följande exempel distribueras två lagringskonton. Det första lagringskontot distribueras till den resursgrupp som anges i distributionsåtgärden. Det andra lagringskontot distribueras till resursgruppen som anges i parametrarna secondResourceGroup
och 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
}
}
Båda modulerna använder samma Bicep-fil med namnet 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: {}
}
Skapa resursgrupp
Information om hur du skapar resursgrupper finns i Skapa resursgrupp med Bicep.
Nästa steg
Mer information om andra omfång finns i: