Alıştırma - Döngüleri kullanarak birden çok kaynak dağıtma
Ş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
Visual Studio Code'da, main.bicep dosyanızı oluşturduğunuz klasörde modules adlı yeni bir klasör oluşturun.
main.bicep dosyanızı yeni oluşturduğunuz modules klasörüne taşıyın.
main.bicep dosyasını database.bicep olarak yeniden adlandırın.
Kopyalama döngüsü kullanarak birden çok örnek dağıtma
Yeni taşıdığınız ve yeniden adlandırdığınız dosyayı değiştirmek için yeni bir main.bicep dosyası oluşturun.
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
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.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.
Azure portalına gidin ve korumalı alan aboneliğinde olduğunuzdan emin olun.
[sandbox resource group name] öğesini seçin.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.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.
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' ]
Dosyadaki değişiklikleri kaydedin.
Visual Studio Code terminalinde, aşağıdaki kodu çalıştırarak dosyayı yeniden dağıtın:
az deployment group create --template-file main.bicep
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' ]
Dosyadaki değişiklikleri kaydedin.
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.