Übung: Bereitstellen mehrerer Ressourcen mithilfe von Schleifen
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
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.
Verschieben Sie die Datei main.bicep in den soeben erstellten Ordner modules.
Benennen Sie die Datei main.bicep in database.bicep um.
Bereitstellen mehrerer Instanzen mithilfe einer Kopierschleife
Erstellen Sie eine neue Datei main.bicep, um die soeben verschobene und umbenannte Datei zu ersetzen.
Ö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
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.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.
Wechseln Sie zum Azure-Portal, und stellen Sie sicher, dass Sie sich im Sandboxabonnement befinden.
Wählen Sie
[Name der Sandboxressourcengruppe] aus.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.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.
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' ]
Speichern Sie die Änderungen in der Datei.
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
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' ]
Speichern Sie die Änderungen in der Datei.
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.
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.Stellen Sie sicher, dass der neue logische Server und die Datenbank in der Region „Asien, Osten“ bereitgestellt wurden.