Ć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@2021-11-01-preview' = {
  name: sqlServerName
  location: location
  properties: {
    administratorLogin: sqlServerAdministratorLogin
    administratorLoginPassword: sqlServerAdministratorLoginPassword
  }
}

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

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

resource sqlServerAudit 'Microsoft.Sql/servers/auditingSettings@2021-11-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.

  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 .

    Screenshot of the Azure portal, showing the deployment of the logical servers and databases in various locations.

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

  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.

    Screenshot of the Azure portal, showing the deployment of a logical server and database in an additional region.