Übung: Bereitstellen mehrerer Ressourcen mithilfe von Schleifen

Abgeschlossen

Bisher hat Ihre Bicep-Vorlage einen einzigen logischen Azure SQL-Server bereitgestellt, auf dem Überwachungseinstellungen für Ihre Produktionsumgebung enthalten sind. Jetzt möchten Sie mehrere logische Server bereitstellen, einen für jede Region, in der Ihr Unternehmen seinen neuen intelligenten Teddybären auf den Markt bringt.

In dieser Übung erweitern Sie den zuvor erstellten Bicep-Code, sodass Sie Instanzen Ihrer Datenbanken in mehreren Azure-Regionen bereitstellen können.

In dem Prozess gehen Sie wie folgt vor:

  • Verschieben Ihres vorhandenen Bicep-Codes in ein Modul
  • Erstellen einer neuen Bicep-Datei mit einer Kopierschleife, um die Ressourcen des Moduls mehrmals bereitzustellen
  • Bereitstellen der Bicep-Datei und Überprüfen der Bereitstellung der Ressourcen
  • Ändern des Parameters zum Hinzufügen eines zusätzlichen Standorts, erneutes Bereitstellen der Datei und Überprüfen der Bereitstellung der neuen Ressourcen

Verschieben von Ressourcen in ein Modul

  1. Erstellen Sie in Visual Studio Code in dem Ordner, in dem Sie die Datei main.bicep erstellt haben, einen neuen Ordner mit dem Namen modules.

  2. Verschieben Sie die Datei main.bicep in den soeben erstellten Ordner modules.

  3. Benennen Sie die Datei main.bicep in database.bicep um.

Bereitstellen mehrerer Instanzen mithilfe einer Kopierschleife

  1. Erstellen Sie eine neue Datei main.bicep, um die soeben verschobene und umbenannte Datei zu ersetzen.

  2. Öffnen Sie die neue Datei main.bicep, und fügen Sie die folgenden Parameter hinzu:

    @description('The Azure regions into which the resources should be deployed.')
    param locations array = [
      'westeurope'
      'eastus2'
    ]
    
    @secure()
    @description('The administrator login username for the SQL server.')
    param sqlServerAdministratorLogin string
    
    @secure()
    @description('The administrator login password for the SQL server.')
    param sqlServerAdministratorLoginPassword string
    
  3. Fügen Sie unter den Parameterdeklarationen die folgende Moduldeklaration hinzu:

    module databases 'modules/database.bicep' = [for location in locations: {
      name: 'database-${location}'
      params: {
        location: location
        sqlServerAdministratorLogin: sqlServerAdministratorLogin
        sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword
      }
    }]
    

    Beachten Sie, dass die Moduldeklaration alle Werte im Arrayparameter locations in einer Schleife durchläuft.

  4. Speichern Sie die Änderungen in der Datei.

Überprüfen Ihrer Bicep-Datei

Nachdem Sie alle oben genannten Änderungen durchgeführt haben, sollte Ihre Datei main.bicep wie im folgenden Beispiel aussehen:

@description('The Azure regions into which the resources should be deployed.')
param locations array = [
  'westeurope'
  'eastus2'
]

@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string

@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string

module databases 'modules/database.bicep' = [for location in locations: {
  name: 'database-${location}'
  params: {
    location: location
    sqlServerAdministratorLogin: sqlServerAdministratorLogin
    sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword
  }
}]

Die Datei database.bicep sollte wie im folgenden Beispiel aussehen:

@description('The Azure region into which the resources should be deployed.')
param location string

@secure()
@description('The administrator login username for the SQL server.')
param sqlServerAdministratorLogin string

@secure()
@description('The administrator login password for the SQL server.')
param sqlServerAdministratorLoginPassword string

@description('The name and tier of the SQL database SKU.')
param sqlDatabaseSku object = {
  name: 'Standard'
  tier: 'Standard'
}

@description('The name of the environment. This must be Development or Production.')
@allowed([
  'Development'
  'Production'
])
param environmentName string = 'Development'

@description('The name of the audit storage account SKU.')
param auditStorageAccountSkuName string = 'Standard_LRS'

var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}'
var sqlDatabaseName = 'TeddyBear'
var auditingEnabled = environmentName == 'Production'
var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)

resource sqlServer 'Microsoft.Sql/servers@2023-08-01-preview' = {
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdministratorLogin
    administratorLoginPassword: sqlServerAdministratorLoginPassword
  }
}

resource sqlDatabase 'Microsoft.Sql/servers/databases@2023-08-01-preview' = {
  parent: sqlServer
  name: sqlDatabaseName
  location: location
  sku: sqlDatabaseSku
}

resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = if (auditingEnabled) {
  name: auditStorageAccountName
  location: location
  sku: {
    name: auditStorageAccountSkuName
  }
  kind: 'StorageV2'  
}

resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2023-08-01-preview' = if (auditingEnabled) {
  parent: sqlServer
  name: 'default'
  properties: {
    state: 'Enabled'
    storageEndpoint: environmentName == 'Production' ? auditStorageAccount.properties.primaryEndpoints.blob : ''
    storageAccountAccessKey: environmentName == 'Production' ? listKeys(auditStorageAccount.id, auditStorageAccount.apiVersion).keys[0].value : ''
  }
}

Andernfalls kopieren Sie das Beispiel, oder passen Sie Ihre Vorlage an das Beispiel an.

Bereitstellen der Bicep-Vorlage in Azure

Stellen Sie die Bicep-Vorlage in Azure im Visual Studio Code-Terminal bereit, indem Sie den folgenden Code ausführen:

az deployment group create --template-file main.bicep

Stellen Sie die Bicep-Vorlage in Azure im Visual Studio Code-Terminal bereit, indem Sie den folgenden Azure PowerShell-Befehl ausführen:

New-AzResourceGroupDeployment -TemplateFile main.bicep

Achtung

Achten Sie darauf, denselben Anmeldenamen und dasselbe Kennwort wie zuvor zu verwenden. Andernfalls wird die Bereitstellung nicht erfolgreich durchgeführt.

Warten Sie, bis die Bereitstellung abgeschlossen ist.

Überprüfen der Bereitstellung

Nach Abschluss der Bereitstellung möchten Sie überprüfen, ob neue logische Server und Datenbanken bereitgestellt wurden und sich in den richtigen Azure-Regionen befinden.

  1. Wechseln Sie zum Azure-Portal, und stellen Sie sicher, dass Sie sich im Sandboxabonnement befinden.

  2. Wählen Sie [Name der Sandboxressourcengruppe] aus.

  3. Stellen Sie sicher, dass sich der neue logische Server und die Datenbank in der Region „USA, Osten 2“ befinden, die Sie im Standardwert locations des Parameters angegeben haben.

    Screenshot des Azure-Portals, der die Bereitstellung der logischen Server und Datenbanken an verschiedenen Standorten zeigt.

  4. Lassen Sie die Seite in Ihrem Browser geöffnet. Sie werden die Bereitstellungen später erneut überprüfen.

Aktualisieren und erneutes Bereitstellen der Vorlage in Azure mit einem zusätzlichen Standort für einen logischen Server

Das Team für den Teddybären plant eine neue Markteinführung, dieses Mal in Asien. Das Team bittet Sie, einen neuen Server und eine neue Datenbank in der Region „Asien, Osten“ bereitzustellen. Dazu müssen Sie Ihren Bicep-Parameter aktualisieren und Ihre Vorlage erneut bereitstellen.

  1. Kehren Sie zu Visual Studio Code zurück. Fügen Sie am Anfang der Datei main.bicep dem Array locations einen neuen Wert hinzu:

    @description('The Azure regions into which the resources should be deployed.')
    param locations array = [
      'westeurope'
      'eastus2'
      'eastasia'
    ]
    
  2. Speichern Sie die Änderungen in der Datei.

  3. Stellen Sie die Datei im Visual Studio Code-Terminal erneut bereit, indem Sie den folgenden Code ausführen:

    az deployment group create --template-file main.bicep
    
  1. Kehren Sie zu Visual Studio Code zurück. Fügen Sie am Anfang der Datei main.bicep dem Array locations einen neuen Wert hinzu:

    @description('The Azure regions into which the resources should be deployed.')
    param locations array = [
      'westeurope'
      'eastus2'
      'eastasia'
    ]
    
  2. Speichern Sie die Änderungen in der Datei.

  3. Stellen Sie die Datei im Visual Studio Code-Terminal erneut bereit, indem Sie den folgenden Code ausführen:

    New-AzResourceGroupDeployment -TemplateFile main.bicep
    

Achtung

Achten Sie darauf, denselben Anmeldenamen und dasselbe Kennwort wie zuvor zu verwenden. Andernfalls wird die Bereitstellung nicht erfolgreich durchgeführt.

Warten Sie, bis die Bereitstellung abgeschlossen ist.

Überprüfen der erneuten Bereitstellung

Nachdem Sie die Ressourcen erneut bereitgestellt haben, möchten Sie überprüfen, ob die zusätzlichen Ressourcen des logischen Servers und der Datenbank in der Region „Asien, Osten“ erstellt wurden.

  1. Kehren Sie zum Azure-Portal zurück, und wählen Sie die Ressourcengruppe [Name der Sandboxressourcengruppe] aus. Wählen Sie bei Bedarf Aktualisieren aus, um die neu bereitgestellten Ressourcen anzuzeigen.

  2. Stellen Sie sicher, dass der neue logische Server und die Datenbank in der Region „Asien, Osten“ bereitgestellt wurden.

    Screenshot des Azure-Portals, der die Bereitstellung eines logischen Servers und einer Datenbank in einer zusätzlichen Region zeigt.