Verwenden von Variablen- und Ausgabeschleifen

Abgeschlossen

Sie haben gelernt, wie Sie mithilfe von Kopierschleifen mehrere Instanzen von Ressourcen bereitstellen und wie Sie die Eigenschaften einer Ressource über Schleifen festlegen. In Bicep können Sie auch Schleifen mit Variablen und Ausgaben verwenden.

Für Ihr Spielwarenunternehmen müssen Sie virtuelle Netzwerke mit der gleichen Subnetzkonfiguration in mehreren Azure-Regionen bereitstellen. Wahrscheinlich müssen Sie Ihren virtuellen Netzwerken in Zukunft weitere Subnetze hinzufügen, daher möchten Sie in Ihren Bicep-Vorlagen die Flexibilität zum Ändern der Subnetzkonfiguration einräumen.

Da Sie außerdem mehrere Speicherkonten in Ihrer Azure-Umgebung bereitstellen, müssen Sie die Endpunkte für jedes Speicherkonto als Ausgabe bereitstellen, damit Ihre Bereitstellungspipelines diese Informationen verwenden können.

In dieser Lerneinheit erfahren Sie, wie Sie Schleifen mit Variablen und Ausgaben verwenden.

Hinweis

Die Befehle in dieser Lerneinheit dienen der Veranschaulichung der Konzepte. Führen Sie die Befehle jetzt noch nicht aus. Sie können das Erlernte in Kürze üben.

Variablenschleifen

Mithilfe von Variablenschleifen können Sie ein Array erstellen, das Sie dann über Ihre Bicep-Datei verwenden können. Wie bei anderen Schleifen verwenden Sie das Schlüsselwort for zum Erstellen einer Variablenschleife:

var items = [for i in range(1, 5): 'item${i}']

Im vorherigen Beispiel wird ein Array erstellt, das die Werte item1, item2, item3, item4 und item5 enthält.

Normalerweise verwenden Sie Variablenschleifen, um komplexere Objekte zu erstellen, die Sie dann in einer Ressourcendeklaration verwenden können. So erstellen Sie eine Eigenschaft subnets mithilfe von Variablenschleifen:

param addressPrefix string = '10.10.0.0/16'
param subnets array = [
  {
    name: 'frontend'
    ipAddressRange: '10.10.0.0/24'
  }
  {
    name: 'backend'
    ipAddressRange: '10.10.1.0/24'
  }
]

var subnetsProperty = [for subnet in subnets: {
  name: subnet.name
  properties: {
    addressPrefix: subnet.ipAddressRange
  }
}]

resource virtualNetwork 'Microsoft.Network/virtualNetworks@2024-01-01' = {
  name: 'teddybear'
  location: resourceGroup().location
  properties:{
    addressSpace:{
      addressPrefixes:[
        addressPrefix
      ]
    }
    subnets: subnetsProperty
  }
}

Dieses Beispiel veranschaulicht eine effektive Verwendung von Variablenschleifen: Ein Parameter mit einfachen, leicht verständlichen Werten wird in ein komplexeres Objekt verwandelt, das der erforderlichen Definition der Azure-Ressource entspricht. Sie können Variablenschleifen verwenden, damit Parameter nur die Schlüsselinformationen angeben müssen, die sich für die einzelnen Elemente in der Liste ändern. Anschließend können Sie Bicep-Ausdrücke oder Standardwerte verwenden, um weitere erforderliche Eigenschaften für die Ressource festzulegen.

Ausgabeschleifen

Sie können Bicep-Ausgaben verwenden, um Informationen aus Ihren Bereitstellungen an den*die Benutzer*in oder das Tool zurückzusenden, von dem bzw. der die Bereitstellung gestartet wurde. Ausgabeschleifen bieten Ihnen die Flexibilität und Leistung von Schleifen innerhalb Ihrer Ausgaben.

Wie bei anderen Schleifen verwenden Sie das Schlüsselwort for zum Angeben einer Ausgabeschleife:

var items = [
  'item1'
  'item2'
  'item3'
  'item4'
  'item5'
]

output outputItems array = [for i in range(0, length(items)): items[i]]

Normalerweise verwenden Sie Ausgabeschleifen in Verbindung mit anderen Schleifen innerhalb Ihrer Vorlage. Sehen wir uns beispielsweise eine Bicep-Datei an, die einen Satz von Speicherkonten in Azure-Regionen bereitstellt, welche durch den Parameter locations angegeben werden:

param locations array = [
  'westeurope'
  'eastus2'
  'eastasia'
]

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

Wahrscheinlich müssen Sie Informationen zu jedem Speicherkonto zurückgeben, das Sie erstellt haben, z. B. den Namen und die Endpunkte, die für den Zugriff verwendet werden können. Mithilfe einer Ausgabeschleife können Sie diese Informationen innerhalb Ihrer Bicep-Datei abrufen.

Hinweis

Derzeit unterstützt Bicep keine direkten Verweise auf Ressourcen, die innerhalb einer Schleife vom Inneren einer Ausgabeschleife aus erstellt wurden. Dies bedeutet, dass Sie Arrayindexer für den Zugriff auf die Ressourcen verwenden müssen, wie im nächsten Beispiel gezeigt.

output storageEndpoints array = [for i in range(0, length(locations)): {
  name: storageAccounts[i].name
  location: storageAccounts[i].location
  blobEndpoint: storageAccounts[i].properties.primaryEndpoints.blob
  fileEndpoint: storageAccounts[i].properties.primaryEndpoints.file
}]

Achtung

Verwenden Sie keine Ausgaben für die Rückgabe von Geheimnissen wie Zugriffsschlüsseln oder Kennwörtern. Ausgaben werden protokolliert und sind nicht für die Verarbeitung sicherer Daten konzipiert.