Freigeben über


Schnellstart: Erstellen mehrerer Ressourceninstanzen in Bicep

Hier erfahren Sie, wie Sie verschiedene for-Syntaxen verwenden, um mehrere Ressourceninstanzen in Bicep zu erstellen. Obwohl in diesem Artikel nur die Erstellung mehrerer Ressourceninstanzen beschrieben ist, können Sie mit den gleichen Methoden Kopien von Modulen, Variablen, Eigenschaften oder Ausgaben definieren. Weitere Informationen finden Sie unter Bicep-Schleifen.

Dieser Artikel enthält folgende Themen:

Voraussetzungen

Wenn Sie kein Azure-Abonnement besitzen, können Sie ein kostenloses Konto erstellen, bevor Sie beginnen.

Informationen zum Einrichten Ihrer Umgebung für die Bicep-Entwicklung finden Sie unter Installieren von Bicep-Tools. Nachdem Sie diese Schritte abgeschlossen haben, verfügen Sie über Visual Studio Code und die Bicep-Erweiterung. Außerdem müssen Sie die neueste Version der Azure CLI oder das neueste Azure PowerShell-Modul besitzen.

Erstellen einer einzelnen Instanz

In diesem Abschnitt definieren Sie eine Bicep-Datei für die Erstellung eines Speicherkontos und stellen diese Datei anschließend zur Verfügung. In den nachfolgenden Abschnitten finden Sie Bicep-Beispiele für verschiedene for-Syntaxen. Sie können die gleiche Bereitstellungsmethode verwenden, um diese Beispiele bereitzustellen und um damit zu experimentieren. Wenn bei der Bereitstellung ein Fehler auftritt, hat dies wahrscheinlich einen der beiden folgenden Gründe:

  • Der Name des Speicherkontos ist zu lang. Speicherkontonamen müssen zwischen 3 und 24 Zeichen lang sein und dürfen nur Zahlen und Kleinbuchstaben enthalten.
  • Der Speicherkontoname ist nicht eindeutig. Der Name Ihres Speicherkontos muss innerhalb von Azure eindeutig sein.

Die folgende Bicep-Datei definiert ein Speicherkonto:

param rgLocation string = resourceGroup().location

resource createStorage 'Microsoft.Storage/storageAccounts@2023-04-01' = {
  name: 'storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}

Speichern Sie die Bicep-Datei lokal und verwenden Sie dann Azure CLI oder Azure PowerShell zum Bereitstellen der Bicep-Datei:

resourceGroupName = "{provide-a-resource-group-name}"
templateFile="{provide-the-path-to-the-bicep-file}"

az group create --name $resourceGroupName --location eastus

az deployment group create --resource-group $resourceGroupName --template-file $templateFile

Verwenden eines ganzzahligen Index

Im folgenden Beispiel wird eine for-Schleife mit einem Index für die Erstellung von zwei Speicherkonten verwendet:

param rgLocation string = resourceGroup().location
param storageCount int = 2

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

output names array = [for i in range(0,storageCount) : {
  name: createStorages[i].name
} ]

Die Indexnummer wird als Teil des Speicherkontonamens verwendet. Nach der Bereitstellung der Bicep-Datei erhalten Sie zwei Speicherkonten, die so ähnlich aussehen wie nachfolgend dargestellt:

Verwenden Sie einen ganzzahligen Index mit 0 als Startnummer

Die erste Zahl innerhalb von „range()“ ist die Startzahl und die zweite Zahl gibt an, wie oft die Schleife ausgeführt wird. Wenn Sie das Beispiel in range(3,2) ändern, erhalten Sie somit ebenfalls zwei Speicherkonten:

Verwenden Sie den Integer-Index mit 3 als Startnummer

Die Ausgabe des vorherigen Beispiels zeigt, wie auf die in einer Schleife erstellten Ressourcen verwiesen wird. Die Ausgabe sieht in etwa wie folgt aus:

"outputs": {
  "names": {
    "type": "Array",
    "value": [
      {
        "name": "0storage52iyjssggmvue"
      },
      {
        "name": "1storage52iyjssggmvue"
      }
    ]
  }
},

Verwenden von Array-Elementen

Sie können ein Array in Schleife durchlaufen. Das folgende Beispiel zeigt ein Array mit Zeichenfolgen.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for name in storageNames: {
  name: '${name}str${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Die Schleife verwendet alle Zeichenfolgen im Array als Teil der Speicherkontonamen. In diesem Fall werden zwei Speicherkonten erstellt:

Verwenden Sie ein Array von Zeichenfolgen

Sie können auch ein Objektarray in Schleife durchlaufen. Die Schleife passt nicht nur die Namen der Speicherkonten an, sondern konfiguriert ebenfalls die SKUs.

param rgLocation string = resourceGroup().location
param storages array = [
  {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for storage in storages: {
  name: '${storage.name}obj${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: storage.skuName
  }
  kind: 'StorageV2'
}]

Die Schleife erstellt zwei Speicherkonten. Die SKU des Speicherkontos, das den Namen trägt, der mit fabrikam beginnt, ist die Premium_LRS.

Verwenden Sie ein Array von Zeichenfolgen

Verwenden von Array und Index

In einigen Fällen möchten Sie vielleicht eine Arrayschleife mit einer Indexschleife kombinieren. Im folgenden Beispiel wird veranschaulicht, wie Sie das Array und die Indexnummer für die Benennungskonvention verwenden.

param rgLocation string = resourceGroup().location
param storageNames array = [
  'contoso'
  'fabrikam'
]

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for (name, i) in storageNames: {
  name: '${i}${name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Nach der Bereitstellung des vorherigen Beispiels erstellen Sie zwei Speicherkonten, die so ähnlich aussehen wie nachfolgend dargestellt:

Verwenden Sie ein Array aus Zeichenfolgen und Indexnummern

Verwenden eines Wörterbuchobjekts

Verwenden Sie zum Iterieren von Elementen in einem Wörterbuchobjekt die items-Funktion, die das Objekt in ein Array konvertiert. Verwenden Sie die value-Eigenschaft, um Eigenschaften für die Objekte abzurufen.

param rgLocation string = resourceGroup().location

param storageConfig object = {
  storage1: {
    name: 'contoso'
    skuName: 'Standard_LRS'
  }
  storage2: {
    name: 'fabrikam'
    skuName: 'Premium_LRS'
  }
}

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for config in items(storageConfig): {
  name: '${config.value.name}${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: config.value.skuName
  }
  kind: 'StorageV2'
}]

Die Schleife erstellt zwei Speicherkonten. Die SKU des Speicherkontos, das den Namen trägt, der mit fabrikam beginnt, ist die Premium_LRS.

Verwenden Sie ein Dictionary-Objekt

Schleife mit Bedingung

Für Ressourcen und Module können Sie einen if-Ausdruck mit der Schleifensyntax hinzufügen, um die Sammlung bedingt bereitzustellen.

param rgLocation string = resourceGroup().location
param storageCount int = 2
param createNewStorage bool = true

resource createStorages 'Microsoft.Storage/storageAccounts@2023-04-01' = [for i in range(0, storageCount): if(createNewStorage) {
  name: '${i}storage${uniqueString(resourceGroup().id)}'
  location: rgLocation
  sku: {
    name: 'Standard_LRS'
  }
  kind: 'StorageV2'
}]

Für weitere Informationen siehe Bedingter Einsatz in Bicep.

Bereinigen von Ressourcen

Wenn Sie die Azure-Ressourcen nicht mehr benötigen, löschen Sie die Ressourcengruppe der Schnellstartanleitung mithilfe der Azure-Befehlszeilenschnittstelle oder des Azure PowerShell-Moduls.

resourceGroupName = "{provide-the-resource-group-name}"

az group delete --name $resourceGroupName

Nächste Schritte