Ćwiczenie — wdrażanie wielu zasobów przy użyciu pętli
Do tej pory szablon Bicep wdrożył pojedynczy serwer logiczny Usługi Azure SQL z ustawieniami inspekcji zawartymi w środowisku produkcyjnym. Teraz musisz wdrożyć wiele serwerów logicznych, po jednym dla każdego regionu, w którym firma uruchamia nowy inteligentny niedźwiedź teddy.
W tym ćwiczeniu rozszerzysz utworzony wcześniej kod Bicep, aby móc wdrażać wystąpienia baz danych w wielu regionach świadczenia usługi Azure.
Podczas tego procesu wykonasz następujące czynności:
- Przenieś istniejący kod Bicep do modułu.
- Utwórz nowy plik Bicep z pętlą kopiowania w celu wielokrotnego wdrażania zasobów modułu.
- Wdróż plik Bicep i zweryfikuj wdrożenie zasobów.
- Zmodyfikuj parametr , aby dodać dodatkową lokalizację, ponownie wdrożyć plik, a następnie sprawdź, czy nowe zasoby zostały wdrożone.
Przenoszenie zasobów do modułu
W programie Visual Studio Code utwórz nowy folder o nazwie modules w tym samym folderze, w którym utworzono plik main.bicep .
Przenieś plik main.bicep do właśnie utworzonego folderu modules .
Zmień nazwę pliku main.bicep na database.bicep.
Wdrażanie wielu wystąpień przy użyciu pętli kopiowania
Utwórz nowy plik main.bicep , aby zastąpić ten, który został właśnie przeniesiony i zmieniony.
Otwórz nowy plik main.bicep i dodaj następujące parametry:
@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
Poniżej deklaracji parametrów dodaj następującą deklarację modułu:
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
Zwróć uwagę, że deklaracja modułu zapętla wszystkie wartości w parametrze
locations
tablicy.Zapisz zmiany w pliku.
Weryfikowanie pliku Bicep
Po zakończeniu wszystkich powyższych zmian plik main.bicep powinien wyglądać następująco:
@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
}
}]
Plik database.bicep powinien wyglądać następująco:
@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 : ''
}
}
Jeśli tak nie jest, skopiuj przykład lub dostosuj szablon tak, aby był zgodny z przykładem.
Wdrażanie szablonu Bicep na platformie Azure
W terminalu programu Visual Studio Code wdróż szablon Bicep na platformie Azure, uruchamiając następujący kod:
az deployment group create --template-file main.bicep
W terminalu programu Visual Studio Code wdróż szablon Bicep na platformie Azure, uruchamiając następujące polecenie programu Azure PowerShell:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Uwaga
Pamiętaj, aby użyć tego samego identyfikatora logowania i hasła, którego użyto wcześniej, lub wdrożenie nie zakończy się pomyślnie.
Poczekaj na zakończenie wdrożenia.
Weryfikowanie wdrożenia
Po zakończeniu wdrażania chcesz sprawdzić, czy nowy serwer logiczny i baza danych są wdrożone i czy znajdują się w odpowiednich regionach świadczenia usługi Azure.
Przejdź do witryny Azure Portal i upewnij się, że jesteś w subskrypcji piaskownicy.
Wybierz pozycję
[nazwa grupy zasobów piaskownicy] .Sprawdź, czy nowy serwer logiczny i baza danych znajdują się w regionie Wschodnie stany USA 2, które określono w wartości domyślnej parametru
locations
.Pozostaw tę stronę otwartą w przeglądarce. Ponownie sprawdzisz wdrożenia później.
Aktualizowanie i ponowne wdrażanie szablonu na platformie Azure przy użyciu dodatkowej lokalizacji serwera logicznego
Teddy bear toy zespół ma rozpocząć ponownie, tym razem do Azji. Zespół prosi o wdrożenie nowego serwera i bazy danych w regionie Azji Wschodniej. W tym celu należy zaktualizować parametr Bicep i ponownie wdrożyć szablon.
Wróć do programu Visual Studio Code. W górnej części pliku main.bicep dodaj nową wartość do tablicy
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Zapisz zmiany w pliku.
W terminalu programu Visual Studio Code ponownie wdróż plik, uruchamiając następujący kod:
az deployment group create --template-file main.bicep
Wróć do programu Visual Studio Code. W górnej części pliku main.bicep dodaj nową wartość do tablicy
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Zapisz zmiany w pliku.
W terminalu programu Visual Studio Code ponownie wdróż plik, uruchamiając następujący kod:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Uwaga
Pamiętaj, aby użyć tego samego identyfikatora logowania i hasła, którego użyto wcześniej, lub wdrożenie nie zakończy się pomyślnie.
Poczekaj na zakończenie wdrożenia.
Weryfikowanie ponownego wdrożenia
Teraz, gdy zasoby zostały ponownie wdrożone, chcesz sprawdzić, czy dodatkowe zasoby serwera logicznego i bazy danych zostały utworzone w regionie Azji Wschodniej.
Wróć do witryny Azure Portal i wybierz grupę
zasobów [nazwa grupy zasobów piaskownicy]. W razie potrzeby wybierz pozycję Odśwież , aby wyświetlić nowo wdrożone zasoby.Sprawdź, czy nowy serwer logiczny i baza danych zostały wdrożone w regionie Azja Wschodnia.