Alıştırma - Döngüleri kullanarak birden çok kaynak dağıtma

Tamamlandı

Şimdiye kadar, Bicep şablonunuz üretim ortamınız için denetim ayarları dahil olmak üzere tek bir Azure SQL mantıksal sunucusu dağıttı. Şimdi şirketinizin yeni akıllı oyuncak ayısını başlattığı her bölge için bir tane olmak üzere birden çok mantıksal sunucu dağıtmanız gerekir.

Bu alıştırmada, veritabanlarınızın örneklerini birden çok Azure bölgesine dağıtabilmek için daha önce oluşturduğunuz Bicep kodunu genişleteceksiniz.

İşlem sırasında şunları yapacaksınız:

  • Mevcut Bicep kodunuzu bir modüle taşıyın.
  • Modülün kaynaklarını birden çok kez dağıtmak için kopyalama döngüsüyle yeni bir Bicep dosyası oluşturun.
  • Bicep dosyasını dağıtın ve kaynakların dağıtımını doğrulayın.
  • Parametresini değiştirerek ek bir konum ekleyin, dosyayı yeniden dağıtın ve yeni kaynakların dağıtıldığını doğrulayın.

Kaynakları modüle taşıma

  1. Visual Studio Code'da, main.bicep dosyanızı oluşturduğunuz klasörde modules adlı yeni bir klasör oluşturun.

  2. main.bicep dosyanızı yeni oluşturduğunuz modules klasörüne taşıyın.

  3. main.bicep dosyasını database.bicep olarak yeniden adlandırın.

Kopyalama döngüsü kullanarak birden çok örnek dağıtma

  1. Yeni taşıdığınız ve yeniden adlandırdığınız dosyayı değiştirmek için yeni bir main.bicep dosyası oluşturun.

  2. Yeni main.bicep dosyasını açın ve aşağıdaki parametreleri ekleyin:

    @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. Parametre bildirimlerinin altına aşağıdaki modül bildirimini ekleyin:

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

    Modül bildiriminin dizi parametresindeki tüm değerler üzerinde döngü olduğuna locations dikkat edin.

  4. Dosyadaki değişiklikleri kaydedin.

Bicep dosyanızı doğrulama

Önceki tüm değişiklikleri tamamladıktan sonra main.bicep dosyanız şu örnekteki gibi görünmelidir:

@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
  }
}]

database.bicep dosyanız şu örneğe benzer olmalıdır:

@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 : ''
  }
}

Aksi takdirde, örneği kopyalayın veya şablonunuzu örnekle eşleşecek şekilde ayarlayın.

Bicep şablonunu Azure'a dağıtma

Visual Studio Code terminalinde aşağıdaki kodu çalıştırarak Bicep şablonunu Azure'a dağıtın:

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

Visual Studio Code terminalinde, aşağıdaki Azure PowerShell komutunu çalıştırarak Bicep şablonunu Azure'a dağıtın:

New-AzResourceGroupDeployment -TemplateFile main.bicep

Dikkat

Daha önce kullandığınız oturum açma bilgilerini ve parolayı kullandığınızdan emin olun; aksi zaman dağıtım başarıyla tamamlanamayacaktır.

Dağıtımın bitmesini bekleyin.

Dağıtımı doğrulama

Dağıtım tamamlandıktan sonra, yeni mantıksal sunucunun ve veritabanının dağıtıldığını ve bunların doğru Azure bölgelerinde bulunduğunu doğrulamak istiyorsunuz.

  1. Azure portalına gidin ve korumalı alan aboneliğinde olduğunuzdan emin olun.

  2. [sandbox resource group name] öğesini seçin.

  3. Yeni mantıksal sunucunun ve veritabanının, parametrenin varsayılan değerinde belirttiğiniz locations Doğu ABD 2 bölgesinde bulunduğunu doğrulayın.

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

  4. Sayfayı tarayıcınızda açık bırakın. Dağıtımları daha sonra tekrar denetleyeceksiniz.

Mantıksal sunucu için ek bir konumla şablonu güncelleştirin ve Azure'a yeniden dağıtın

Oyuncak oyuncak oyuncak takımı bu sefer Asya'ya doğru tekrar fırlatmak üzere. Ekip, Doğu Asya bölgesinde yeni bir sunucu ve veritabanı dağıtmanızı istiyor. Bunu yapmak için Bicep parametrenizi güncelleştirmeniz ve şablonunuzu yeniden dağıtmanız gerekir.

  1. Visual Studio Code'a geri dönün. main.bicep dosyasının en üstüne diziye locations yeni bir değer ekleyin:

    @description('The Azure regions into which the resources should be deployed.')
    param locations array = [
      'westeurope'
      'eastus2'
      'eastasia'
    ]
    
  2. Dosyadaki değişiklikleri kaydedin.

  3. Visual Studio Code terminalinde, aşağıdaki kodu çalıştırarak dosyayı yeniden dağıtın:

    az deployment group create --template-file main.bicep
    
  1. Visual Studio Code'a geri dönün. main.bicep dosyasının en üstüne diziye locations yeni bir değer ekleyin:

    @description('The Azure regions into which the resources should be deployed.')
    param locations array = [
      'westeurope'
      'eastus2'
      'eastasia'
    ]
    
  2. Dosyadaki değişiklikleri kaydedin.

  3. Visual Studio Code terminalinde, aşağıdaki kodu çalıştırarak dosyayı yeniden dağıtın:

    New-AzResourceGroupDeployment -TemplateFile main.bicep
    

Dikkat

Daha önce kullandığınız oturum açma bilgilerini ve parolayı kullandığınızdan emin olun; aksi zaman dağıtım başarıyla tamamlanamayacaktır.

Dağıtımın bitmesini bekleyin.

Yeniden dağıtımı doğrulama

Kaynakları yeniden dağıttığınız için, Doğu Asya bölgesinde ek mantıksal sunucu ve veritabanı kaynaklarının oluşturulduğunu doğrulamak istiyorsunuz.

  1. Azure portalına dönün ve [sandbox resource group name] kaynak grubunu seçin. Gerekirse yeni dağıtılan kaynakları görmek için Yenile'yi seçin.

  2. Yeni mantıksal sunucunun ve veritabanının Doğu Asya bölgesinde dağıtıldığını doğrulayın.

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