Latihan - Menyebarkan beberapa sumber daya dengan menggunakan perulangan
Sejauh ini, templat Bicep Anda telah menggunakan satu server logika Azure SQL, dengan pengaturan audit disertakan untuk lingkungan produksi Anda. Anda sekarang perlu menyebarkan beberapa server logika, satu untuk setiap kawasan di mana perusahaan Anda meluncurkan boneka beruang cerdas barunya.
Dalam latihan ini, Anda akan memperluas kode Bicep yang Anda buat sebelumnya sehingga Anda dapat menyebarkan instans database Anda ke beberapa wilayah Azure.
Selama proses tersebut, Anda akan:
- Pindahkan kode Bicep Anda yang ada ke dalam modul.
- Buat file Bicep baru dengan perulangan salinan untuk menyebarkan sumber daya modul beberapa kali.
- Sebarkan file Bicep, dan verifikasikan penyebaran sumber daya.
- Ubah parameter untuk menambahkan lokasi tambahan, sebarkan ulang file, lalu verifikasi bahwa sumber daya baru telah disebarkan.
Memindahkan resource ke dalam modul
Di Visual Studio Code, buat folder baru bernama modul di folder yang sama tempat Anda membuat file main.bicep Anda.
Pindahkan file main.bicep Anda ke folder modul yang baru saja Anda buat.
Ganti nama file main.bicep menjadi database.bicep.
Menyebarkan beberapa instans dengan menggunakan perulangan salinan
Membuat file main.bicep baru untuk menggantikan file yang baru saja Anda pindahkan dan ganti namanya.
Buka file main.bicep baru, dan tambahkan parameter berikut:
@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
Di bawah deklarasi parameter, tambahkan deklarasi modul berikut:
module databases 'modules/database.bicep' = [for location in locations: { name: 'database-${location}' params: { location: location sqlServerAdministratorLogin: sqlServerAdministratorLogin sqlServerAdministratorLoginPassword: sqlServerAdministratorLoginPassword } }]
Perhatikan bahwa deklarasi modul mengulang semua nilai dalam parameter array
locations
.Simpan perubahan pada file.
Memverifikasi file Bicep Anda
Setelah Anda menyelesaikan semua perubahan sebelumnya, file main.bicep Anda akan terlihat seperti contoh ini:
@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
}
}]
File database.bicep Anda akan terlihat seperti contoh ini:
@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 : ''
}
}
Jika tidak, salin contoh atau sesuaikan templat Anda agar sesuai dengan contoh.
Menyebarkan templat Bicep ke Azure
Di terminal Visual Studio Code, sebarkan templat Bicep ke Azure dengan menjalankan kode berikut:
az deployment group create --template-file main.bicep
Di terminal Visual Studio Code, sebarkan templat Bicep ke Azure dengan menjalankan perintah Azure PowerShell berikut:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Perhatian
Pastikan untuk menggunakan login dan kata sandi yang sama dengan yang Anda gunakan sebelumnya, atau penyebaran tidak akan berhasil diselesaikan.
Tunggu hingga penyebaran selesai.
Verifikasi penyebaran
Setelah penyebaran selesai, Anda ingin memverifikasi bahwa server logis dan database baru disebarkan dan bahwa server tersebut terletak di wilayah Azure yang benar.
Buka portal Microsoft Azure dan pastikan Anda berada di langganan kotak pasir.
Pilih
[nama grup sumber daya kotak pasir] .Verifikasi bahwa server logika dan database baru terletak di kawasan US Timur 2, yang Anda tentukan dalam nilai default parameter
locations
.Biarkan halaman terbuka di browser Anda. Anda akan memeriksa penyebaran lagi.
Memperbarui dan menyebarkan templat ke Azure dengan lokasi tambahan untuk server logika
Tim boneka beruang teddy akan segera diluncurkan lagi, kali ini ke Asia. Tim meminta Anda untuk menyebarkan server dan database baru di kawasan Asia Timur. Untuk melakukannya, Anda perlu memperbarui parameter Bicep dan menyebarkan ulang templat Anda.
Kembali ke Visual Studio Code. Di bagian atas file main.bicep, tambahkan nilai baru ke array
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Simpan perubahan pada file.
Pada terminal Visual Studio Code, sebarkan ulang file dengan menjalankan perintah berikut:
az deployment group create --template-file main.bicep
Kembali ke Visual Studio Code. Di bagian atas file main.bicep, tambahkan nilai baru ke array
locations
:@description('The Azure regions into which the resources should be deployed.') param locations array = [ 'westeurope' 'eastus2' 'eastasia' ]
Simpan perubahan pada file.
Pada terminal Visual Studio Code, sebarkan ulang file dengan menjalankan perintah berikut:
New-AzResourceGroupDeployment -TemplateFile main.bicep
Perhatian
Pastikan untuk menggunakan login dan kata sandi yang sama dengan yang Anda gunakan sebelumnya, atau penyebaran tidak akan berhasil diselesaikan.
Tunggu hingga penyebaran selesai.
Memverifikasi penyebaran ulang
Setelah Anda melakukan penyebaran ulang sumber daya, Anda harus memverifikasi bahwa server logis tambahan dan sumber daya database telah dibuat di kawasan Asia Timur.
Kembali ke portal Microsoft Azure dan pilih grup sumber daya
[nama grup sumber daya kotak pasir] . Jika perlu, pilih Refresh untuk melihat sumber daya yang baru disebarkan.Verifikasi bahwa server dan database logika baru telah disebarkan di kawasan Asia Timur.