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:

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: