Ćwiczenie — wdrażanie wielu zasobów przy użyciu pętli

Ukończone

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

  1. W programie Visual Studio Code utwórz nowy folder o nazwie modules w tym samym folderze, w którym utworzono plik main.bicep .

  2. Przenieś plik main.bicep do właśnie utworzonego folderu modules .

  3. Zmień nazwę pliku main.bicep na database.bicep.

Wdrażanie wielu wystąpień przy użyciu pętli kopiowania

  1. Utwórz nowy plik main.bicep , aby zastąpić ten, który został właśnie przeniesiony i zmieniony.

  2. 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
    
  3. 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.

  4. 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 tego procesu wdrożeniowego.

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.

  1. Przejdź do witryny Azure Portal i upewnij się, że jesteś w subskrypcji piaskownicy.

  2. Wybierz pozycję [nazwa grupy zasobów piaskownicy].

  3. 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 .

    Zrzut ekranu witryny Azure Portal przedstawiający wdrażanie serwerów logicznych i baz danych w różnych lokalizacjach.

  4. 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.

  1. 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'
    ]
    
  2. Zapisz zmiany w pliku.

  3. W terminalu programu Visual Studio Code ponownie wdróż plik, uruchamiając następujący kod:

    az deployment group create --template-file main.bicep
    
  1. 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'
    ]
    
  2. Zapisz zmiany w pliku.

  3. 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 tego procesu wdrożeniowego.

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.

  1. 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.

  2. Sprawdź, czy nowy serwer logiczny i baza danych zostały wdrożone w regionie Azja Wschodnia.

    Zrzut ekranu witryny Azure Portal przedstawiający wdrożenie serwera logicznego i bazy danych w dodatkowym regionie.