Bereitstellung von Ressourcengruppen mit Bicep-Dateien

In diesem Artikel wird beschrieben, wie Sie bei der Bereitstellung in einer Ressourcengruppe den Bereich mit Bicep festlegen.

Unterstützte Ressourcen

Die meisten Ressourcen können in einer Ressourcengruppe bereitgestellt werden. Eine Liste der verfügbaren Ressourcen finden Sie unter Definieren von Ressourcen in Azure Resource Manager-Vorlagen.

Mengenbereich

Der Bereich einer Bicep-Datei wird standardmäßig auf die Ressourcengruppe festgelegt. Wenn Sie den Bereich explizit festlegen möchten, verwenden Sie Folgendes:

targetScope = 'resourceGroup'

Das Festlegen des Zielbereichs auf eine Ressourcengruppe ist jedoch nicht erforderlich, da dieser Bereich standardmäßig verwendet wird.

Bereitstellungsbefehle

Verwenden Sie für die Bereitstellung in einer Ressourcengruppe die Ressourcengruppen-Bereitstellungsbefehle.

Verwenden Sie für die Azure CLI az deployment group create. Das folgende Beispiel stellt eine Vorlage zum Erstellen einer Ressourcengruppe bereit. Die von Ihnen im Parameter --resource-group angegebene Ressourcengruppe ist die Zielressourcengruppe.

az deployment group create \
  --name demoRGDeployment \
  --resource-group ExampleGroup \
  --template-file main.bicep \
  --parameters storageAccountType=Standard_GRS

Ausführlichere Informationen über Bereitstellungsbefehle und -optionen für die Bereitstellung von ARM-Vorlagen finden Sie in den folgenden Artikeln:

Bereitstellungsbereiche

Bei der Bereitstellung in einer Ressourcengruppe können Sie Ressourcen an folgenden Orten bereitstellen:

  • in der Zielressourcengruppe für den Bereitstellungsvorgang
  • In anderen Ressourcengruppen im selben Abonnement oder in anderen Abonnements
  • in einem beliebigen Abonnement im Mandanten
  • im Mandanten für die Ressourcengruppe

Für eine Erweiterungsressource kann der Bereich auf ein Ziel festgelegt werden, das sich vom Bereitstellungsziel unterscheidet.

Der Benutzer, der die Vorlage bereitstellt, muss Zugriff auf den angegebenen Bereich besitzen.

In diesem Abschnitt wird das Festlegen verschiedener Bereiche veranschaulicht. Sie können diese verschiedenen Bereiche in einer Vorlage kombinieren.

Bereich: Zielressourcengruppe

Um Ressourcen für die Zielressourcengruppe bereitzustellen, fügen Sie diese Ressourcen der Bicep-Datei hinzu.

// resource deployed to target resource group
resource exampleResource 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  ...
}

Eine Beispielvorlage finden Sie unter Bereitstellen in der Zielressourcengruppe.

Bereich: andere Ressourcengruppe

Wenn Sie Ressourcen in einer anderen Ressourcengruppe als der Zielressourcengruppe bereitstellen möchten, fügen Sie ein Modul hinzu. Verwenden Sie die resourceGroup-Funktion, um die Eigenschaft scope für dieses Modul festzulegen.

Wenn sich die Ressourcengruppe in einem anderen Abonnement befindet, geben Sie die Abonnement-ID und den Namen der Ressourcengruppe an. Wenn sich die Ressourcengruppe im selben Abonnement wie die aktuelle Bereitstellung befindet, geben Sie nur den Namen der Ressourcengruppe an. Wenn Sie kein Abonnement in der resourceGroup-Funktion angeben, wird das aktuelle Abonnement verwendet.

Das folgende Beispiel zeigt ein Modul, das auf eine Ressourcengruppe in einem anderen Abonnement ausgerichtet ist.

param otherResourceGroup string
param otherSubscriptionID string

// module deployed to different subscription and resource group
module exampleModule 'module.bicep' = {
  name: 'otherSubAndRG'
  scope: resourceGroup(otherSubscriptionID, otherResourceGroup)
}

Das nächste Beispiel zeigt ein Modul, das auf eine Ressourcengruppe im selben Abonnement ausgerichtet ist.

param otherResourceGroup string

// module deployed to resource group in the same subscription
module exampleModule 'module.bicep' = {
  name: 'otherRG'
  scope: resourceGroup(otherResourceGroup)
}

Eine Beispielvorlage finden Sie unter Bereitstellen in mehreren Ressourcengruppen.

Bereich: Abonnement

Fügen Sie zum Bereitstellen von Ressourcen zu einem Abonnement ein Modul hinzu. Verwenden Sie die subscription-Funktion, um die Eigenschaft scope festzulegen.

Verwenden Sie zum Bereitstellen im aktuellen Abonnement die subscription-Funktion ohne Parameter.


// module deployed at subscription level
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription()
}

Geben Sie zum Bereitstellen in einem anderen Abonnement diese Abonnement-ID als Parameter in der subscription-Funktion an.

param otherSubscriptionID string

// module deployed at subscription level but in a different subscription
module exampleModule 'module.bicep' = {
  name: 'deployToSub'
  scope: subscription(otherSubscriptionID)
}

Eine Beispielvorlage finden Sie unter Erstellen der Ressourcengruppe mit Bicep.

Bereich: Mandant

Zum Erstellen von Ressourcen im Mandanten fügen Sie ein Modul hinzu. Verwenden Sie die tenant-Funktion, um die Eigenschaft scope festzulegen.

Der Benutzer, der die Vorlage bereitstellt, muss über den erforderlichen Zugriff zum Bereitstellen im Mandanten verfügen.

Das folgende Beispiel enthält ein Modul, das im Mandanten bereitgestellt wird.

// module deployed at tenant level
module exampleModule 'module.bicep' = {
  name: 'deployToTenant'
  scope: tenant()
}

Anstatt ein Modul zu verwenden, können Sie für einige Ressourcentypen den Bereich auf tenant() festlegen. Im folgenden Beispiel wird eine Verwaltungsgruppe im Mandanten bereitgestellt.

param mgName string = 'mg-${uniqueString(newGuid())}'

// ManagementGroup deployed at tenant
resource managementGroup 'Microsoft.Management/managementGroups@2020-05-01' = {
  scope: tenant()
  name: mgName
  properties: {}
}

output output string = mgName

Weitere Informationen finden Sie unter Verwaltungsgruppe.

Bereitstellen in der Zielressourcengruppe

Zum Bereitstellen von Ressourcen in der Zielressourcengruppe definieren Sie die Ressourcen im Abschnitt resources der Vorlage. Mit der folgenden Vorlage wird ein Speicherkonto in der Ressourcengruppe erstellt, die im Bereitstellungsvorgang angegeben ist.

@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@2021-04-01' = {
  name: uniqueStorageName
  location: location
  sku: {
    name: storageSKU
  }
  kind: 'StorageV2'
  properties: {
    supportsHttpsTrafficOnly: true
  }
}

output storageEndpoint object = stg.properties.primaryEndpoints

Bereitstellen in mehreren Ressourcengruppen

Sie können in einer einzelnen Bicep-Datei Ressourcen in mehr als einer Ressourcengruppe bereitstellen.

Hinweis

Sie können mit einer einzigen Bereitstellung in 800 Ressourcengruppen bereitstellen. Normalerweise bedeutet diese Einschränkung, dass Sie die Bereitstellung für eine Ressourcengruppe durchführen können, die für die übergeordnete Vorlage angegeben ist, sowie für bis zu 799 Ressourcengruppen in geschachtelten oder verknüpften Bereitstellungen. Wenn Ihre übergeordnete Vorlage aber nur geschachtelte oder verknüpfte Vorlagen enthält und selbst keine Ressourcen bereitstellt, können Sie bis zu 800 Ressourcengruppen in geschachtelte oder verknüpfte Bereitstellungen einbinden.

Im folgenden Beispiel werden zwei Speicherkonten bereitgestellt. Das erste Speicherkonto wird in der Ressourcengruppe bereitgestellt, die Sie im Bereitstellungsvorgang angegeben haben. Das zweite Speicherkonto wird in der Ressourcengruppe bereitgestellt, die in den Parametern secondResourceGroup und secondSubscriptionID angegeben wurde:

@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
  }
}

Beide Module verwenden dieselbe Bicep-Datei mit dem Namen storage.bicep.

param storageLocation string
param storageName string

resource storageAcct 'Microsoft.Storage/storageAccounts@2019-06-01' = {
  name: storageName
  location: storageLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'Storage'
  properties: {}
}

Ressourcengruppe erstellen

Informationen zum Erstellen von Ressourcengruppen finden Sie unter Erstellen einer Ressourcengruppe mit Bicep.

Nächste Schritte

Informationen zu anderen Bereichen finden Sie unter folgenden Links: