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:
- Verwenden eines ganzzahligen Index
- Verwenden von Array-Elementen
- Verwenden von Array und Index
- Verwenden eines Wörterbuchobjekts
- Schleife mit Bedingung
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:
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:
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:
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 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 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.
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