Latihan - Menyebarkan sumber daya secara kondisional
Catatan
Saat Anda pertama kali mengaktifkan kotak pasir dan menerima persyaratan, akun Microsoft Anda dikaitkan dengan direktori Azure baru bernama Microsoft Learn Sandbox. Anda juga ditambahkan ke langganan khusus bernama Langganan Concierge.
Anda perlu menyebarkan sumber daya perusahaan mainan Anda ke berbagai lingkungan, dan Anda ingin menggunakan parameter dan kondisi untuk mengontrol apa yang disebarkan ke setiap lingkungan.
Dalam latihan ini, Anda akan membuat server logis Azure SQL dan database. Anda kemudian akan menambahkan pengaturan audit untuk memastikan bahwa audit diaktifkan, tetapi Anda hanya ingin mengaktifkannya saat Anda menyebarkan ke lingkungan produksi. Untuk tujuan audit, Anda harus memiliki akun penyimpanan, yang juga akan Anda sebarkan hanya saat menyebarkan sumber daya ke lingkungan produksi.
Selama proses tersebut, Anda akan:
- Buat file Bicep yang menentukan server logika dengan database.
- Tambahkan akun penyimpanan dan pengaturan audi SQL, yang masing-masing disebarkan dengan kondisi.
- Siapkan infrastruktur untuk lingkungan pengembangan Anda, lalu verifikasikan hasilnya.
- Sebarkan ulang infrastruktur Anda terhadap lingkungan produksi Anda, dan kemudian lihat perubahannya.
Latihan ini menggunakan ekstensi Bicep untuk Visual Studio Code. Pastikan untuk menginstal ekstensi ini di Visual Studio Code.
Membuat templat Bicep dengan server logika dan database
Buka Visual Studio Code.
Buat file baru yang disebut main.bicep.
Simpan file kosong sehingga Visual Studio Code dapat memuat alat Bicep.
Anda dapat memilih File>Simpan Sebagai atau pilih Ctrl+S untuk Windows (⌘+S untuk macOS). Pastikan Anda mengingat di mana Anda menyimpan file tersebut. Misalnya, Anda mungkin ingin membuat folder templat untuk menyimpan filenya.
Untuk menentukan server logika dan database, tambahkan konten berikut ke file, bersama dengan parameter dan variabel yang dibutuhkan sumber daya ini. Masukkan konten Anda sendiri alih-alih menyalin dan menempelkan sehingga Anda dapat melihat bagaimana peralatan membantu Anda menulis file Bicep Anda.
@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' } var sqlServerName = 'teddy${location}${uniqueString(resourceGroup().id)}' var sqlDatabaseName = 'TeddyBear' 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 }
Perhatikan bahwa semua parameter termasuk
@description
dekorator, yang membantu membuatnya lebih mudah dikerjakan. Perhatikan juga bahwa parametersqlServerAdministratorLogin
dansqlServerAdministratorLoginPassword
sudah diterapkan dengan dekorator@secure
. Hal ini memberi info pada Bicep bahwa nilai parameter ini bersifat sensitif. Azure tidak mencetak nilai sensitif ke log.
Menambahkan akun penyimpanan
Dalam pengaturan audit untuk server logika, Anda perlu menentukan akun penyimpanan untuk berisi data audit. Anda akan memperbarui file Bicep untuk membuat akun penyimpanan ini, tetapi hanya ketika audit akan diaktifkan.
Di bawah deklarasi parameter, tambahkan parameter berikut:
@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'
Di bawah deklarasi variabel, tambahkan variabel berikut:
var auditingEnabled = environmentName == 'Production' var auditStorageAccountName = take('bearaudit${location}${uniqueString(resourceGroup().id)}', 24)
Perhatikan bahwa Anda membuat variabel yang disebut
auditingEnabled
, yang akan Anda gunakan sebagai kondisi untuk menyebarkan sumber daya audit. Ketika Anda membuat variabel seperti ini, Anda membuat kode Bicep Anda lebih jelas dan lebih mudah dibaca. Siapa pun yang melihat kondisi pada sumber daya Anda akan memahami apa yang terjadi.Perhatikan juga bahwa variabel
auditStorageAccountName
menggunakan fungsi yang disebuttake()
. Nama akun penyimpanan memiliki panjang maksimum 24 karakter, sehingga fungsi ini memangkas akhiran string untuk memastikan bahwa nama tersebut valid.Di bagian bawah file, di bawah sumber daya, tambahkan definisi sumber daya berikut untuk akun penyimpanan:
resource auditStorageAccount 'Microsoft.Storage/storageAccounts@2021-09-01' = if (auditingEnabled) { name: auditStorageAccountName location: location sku: { name: auditStorageAccountSkuName } kind: 'StorageV2' }
Perhatikan bahwa definisi untuk akun penyimpanan menyertakan kata kunci
if
, yang menentukan kondisi penyebaran.
Menambahkan pengaturan audit
Di bawah sumber daya akun penyimpanan yang baru saja Anda tambahkan, tambahkan hal berikut:
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 : '' } }
Perhatikan bahwa definisi tersebut mencakup kondisi
if
yang sama dengan akun penyimpanan. Selain itu, propertistorageEndpoint
danstorageAccountAccessKey
menggunakan operator terner tanda tanya (?
) untuk memastikan bahwa nilainya selalu valid. Jika Anda tidak melakukannya, Azure Resource Manager mengevaluasi nilai ekspresi sebelum mengevaluasi kondisi penyebaran sumber daya dan mengembalikan kesalahan, karena akun penyimpanan tidak dapat ditemukan.Simpan perubahan pada file.
Memverifikasi file Bicep Anda
Setelah Anda menyelesaikan semua perubahan sebelumnya, file 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
Untuk menyebarkan templat ini ke Azure, Anda harus masuk ke akun Azure Anda dari terminal Visual Studio Code. Pastikan Anda telah menginstal Azure CLI, dan ingatlah untuk masuk dengan akun yang sama dengan yang Anda gunakan untuk mengaktifkan kotak pasir.
Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.
Jika shell yang ditampilkan di sisi kanan jendela terminal adalah bash, shell yang benar terbuka dan Anda dapat melompat ke bagian berikutnya.
Jika shell selain bash muncul, pilih panah dropdown shell, lalu pilih Git Bash.
Dalam daftar shell terminal, pilih bash.
Di terminal, buka direktori tempat Anda menyimpan template. Misalnya, jika Anda menyimpan template ke folder template, Anda dapat menggunakan perintah ini:
cd templates
Menginstal Bisep
Jalankan perintah berikut untuk memastikan Anda memiliki Bicep versi terbaru:
az bicep install && az bicep upgrade
Masuk ke Azure
Pada terminal Visual Studio Code, masuk ke Azure dengan menjalankan perintah berikut:
az login
Masuk ke akun Azure Anda melalui browser yang terbuka.
Terminal Visual Studio Code menampilkan daftar langganan yang terkait dengan akun ini.
Tetapkan langganan default untuk semua perintah Azure CLI yang Anda jalankan dalam sesi ini.
az account set --subscription "Concierge Subscription"
Catatan
Jika Anda telah menggunakan lebih dari satu kotak pasir baru-baru ini, terminal mungkin menampilkan lebih dari satu instans Langganan Concierge. Jika demikian, gunakan dua langkah berikutnya untuk menetapkan salah satunya sebagai langganan default. Jika perintah sebelumnya berhasil, dan hanya satu Langganan Concierge yang tercantum, lewati dua langkah berikutnya.
Mendapatkan ID Langganan Concierge.
az account list \ --refresh \ --query "[?contains(name, 'Concierge Subscription')].id" \ --output table
Tetapkan langganan default menggunakan ID langganan. Ganti {ID langganan Anda} dengan ID Langganan Concierge terbaru.
az account set --subscription {your subscription ID}
Menetapkan grup sumber daya default
Saat menggunakan Azure CLI, Anda dapat mengatur grup sumber daya default dan menghilangkan parameter dari perintah Azure CLI lainnya dalam latihan ini. Atur default ke grup sumber daya yang dibuat untuk Anda di lingkungan kotak pasir.
az configure --defaults group="<rgn>[sandbox resource group name]</rgn>"
Menyebarkan templat ke Azure menggunakan Azure CLI
Di terminal Visual Studio Code, sebarkan templat Bicep ke Azure dengan menjalankan kode berikut. Perhatikan bahwa Anda secara eksplisit mengatur parameter location
ke westus3
.
az deployment group create --template-file main.bicep --parameters location=westus3
Untuk menyebarkan template ini ke Azure, masuk ke akun Azure dari terminal Visual Studio Code. Pastikan Anda telah menginstal Azure PowerShell, dan masuk ke akun yang sama yang mengaktifkan ko.
Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.
Jika shell yang ditampilkan di sisi kanan jendela terminal adalah powershell atau pwsh, shell yang benar terbuka, dan Anda dapat melompat ke bagian berikutnya.
Jika shell selain powershell atau pwsh muncul, pilih panah dropdown shell, lalu pilih PowerShell.
Dalam daftar shell terminal, pilih powershell atau pwsh.
Di terminal, buka direktori tempat Anda menyimpan template. Misalnya, jika Anda menyimpannya ke folder template, Anda dapat menggunakan perintah ini:
Set-Location -Path templates
Menginstal Bicep CLI
Untuk menggunakan Bicep dari Azure PowerShell, instal Bicep CLI.
Masuk ke Azure menggunakan Azure PowerShell
Di terminal Visual Studio Code, jalankan perintah berikut:
Connect-AzAccount
Browser terbuka sehingga Anda dapat masuk ke akun Azure.
Setelah masuk ke Azure, terminal menampilkan daftar langganan yang terkait dengan akun ini.
Jika Anda telah mengaktifkan kotak pasir, langganan bernama Langganan Concierge akan ditampilkan. Gunakan kotak pasir tersebut untuk latihan yang tersisa.
Tetapkan langganan default untuk semua perintah Azure PowerShell yang dijalankan dalam sesi ini.
$context = Get-AzSubscription -SubscriptionName 'Concierge Subscription' Set-AzContext $context
Catatan
Jika Anda telah menggunakan lebih dari satu kotak pasir baru-baru ini, terminal mungkin menampilkan lebih dari satu instans Langganan Concierge. Jika demikian, gunakan dua langkah berikutnya untuk menetapkan salah satunya sebagai langganan default. Jika perintah sebelumnya berhasil, dan hanya satu Langganan Concierge yang tercantum, lewati dua langkah berikutnya.
Dapatkan ID langganan. Menjalankan perintah berikut akan mencantumkan langganan Anda dan ID mereka. Cari
Concierge Subscription
, lalu salin ID dari kolom kedua. Ini terlihat seperticf49fbbc-217c-4eb6-9eb5-a6a6c68295a0
.Get-AzSubscription
Ubah langganan aktif Anda menjadi Langganan Concierge. Pastikan untuk mengganti {Your subscription ID} dengan ID yang telah Anda salin.
$context = Get-AzSubscription -SubscriptionId {Your subscription ID} Set-AzContext $context
Menetapkan grup sumber daya default
Anda dapat mengatur grup sumber daya default dan menghilangkan parameter dari perintah Azure PowerShell lainnya dalam latihan ini. Atur default ini ke grup sumber daya yang dibuat untuk Anda di lingkungan kotak pasir.
Set-AzDefault -ResourceGroupName <rgn>[sandbox resource group name]</rgn>
Menyebarkan templat ke Azure menggunakan Azure PowerShell
Di terminal Visual Studio Code, sebarkan templat ke Azure dengan menjalankan perintah Azure PowerShell berikut. Proses ini dapat memakan waktu beberapa menit untuk diselesaikan, dan Anda akan memiliki penyebaran yang berhasil.
New-AzResourceGroupDeployment -TemplateFile main.bicep -location westus3
Anda diminta untuk memasukkan nilai untuk parameter sqlServerAdministratorLogin
dan sqlServerAdministratorLoginPassword
saat menjalankan penyebaran.
Tip
Saat Anda memasukkan parameter aman, nilai yang Anda pilih harus mengikuti aturan tertentu:
sqlServerAdministratorLogin
tidak boleh berupa nama untuk masuk yang mudah ditebak sepertiadmin
atauroot
. Nama untuk masuk hanya dapat berisi karakter alfanumerik dan harus dimulai dengan huruf.- Panjang
sqlServerAdministratorLoginPassword
mimal harus delapan karakter dan menyertakan huruf kecil, huruf besar, angka, dan simbol. Untuk mengetahui informasi selengkapnya tentang kompleksitas kata sandi, lihat kebijakan kata sandi SQL Azure Anda.
Jika nilai parameter tidak memenuhi persyaratan, Azure SQL tidak akan menyebarkan server logika Anda.
Selain itu, pastikan untuk mencatat info masuk dan kata sandi yang Anda masukkan. Anda akan menggunakannya beberapa saat lagi.
Karena Anda belum menentukan nilai untuk parameter environmentName
tersebut, nilai default Development
digunakan.
Tunggu penyebaran selesai. Jika penyebaran Anda gagal dengan pesan bahwa suatu lokasi tidak menerima pembuatan server Windows Azure Database SQL baru, pilih wilayah yang berbeda seperti eastus
atau eastus2
.
Verifikasi penyebaran
Gunakan portal Microsoft Azure untuk memeriksa sumber daya yang Anda sebarkan dan untuk memeriksa hasil penyebaran.
Buka portal Microsoft Azure dan pastikan Anda berada di langganan kotak pasir dengan melakukan hal berikut:
a. Pilih avatar Anda di kanan atas.
b. Lalu pilih Beralih direktori. Dalam daftar, pilih direktori Microsoft Learn Sandbox.Di panel kiri, pilih Grup sumber daya.
Pilih
[nama grup sumber daya kotak pasir] .Di bagian Gambaran umum, Anda dapat melihat bahwa satu penyebaran telah berhasil. Anda juga dapat melihat bahwa server logika dan database SQL disebarkan, tetapi akun penyimpanan untuk audit tidak disebarkan.
Catatan
Akun penyimpanan dengan nama yang dimulai dengan
cloudshell
tidak terkait dengan penyebaran Anda dan dibuat oleh kotak pasir Microsoft Learn.Di samping Penyebaran, pilih 1 Berhasil untuk melihat detail penyebaran.
Pilih penyebaran yang disebut utama untuk melihat sumber daya yang diterapkan, lalu pilih Detail penyebaran untuk memperluasnya.
Dalam hal ini, satu server logika dan satu SQL database disebarkan. Perhatikan bahwa akun penyimpanan dan pengaturan audit tidak berada dalam daftar sumber daya.
Biarkan halaman terbuka di browser Anda. Anda akan memeriksa penyebaran lagi.
Menyebarkan ulang untuk lingkungan produksi
Dalam penyebaran sebelumnya, nilai default untuk parameter environmentName
digunakan, yang berarti nilai default tersebut sudah diatur ke Development
.
Sekarang Anda akan secara eksplisit mengatur nilai parameter ke Production
. Anda mengharapkan bahwa, dengan melakukan perubahan ini, akun penyimpanan untuk tujuan audit akan disebarkan, dan audit akan diaktifkan pada server logika.
Menyebarkan templat untuk lingkungan produksi
Di terminal Visual Studio Code, sebarkan templat Bicep ke Azure dengan menjalankan kode berikut:
az deployment group create --template-file main.bicep --parameters environmentName=Production location=westus3
Di terminal Visual Studio Code, sebarkan templat ke Azure dengan menjalankan perintah Azure PowerShell berikut:
New-AzResourceGroupDeployment -TemplateFile main.bicep -environmentName Production -location westus3
Perhatian
Pastikan untuk menggunakan login dan kata sandi yang sama dengan yang Anda gunakan sebelumnya, atau penyebaran tidak akan berhasil diselesaikan.
Setelah satu atau dua menit, penyebaran akan berhasil diselesaikan.
Memverifikasi penyebaran ulang
Untuk menyelesaikan latihan ini, periksa bahwa penyebaran ulang berhasil diselesaikan dan bahwa audit telah diaktifkan.
Kembali ke portal Azure dan buka grup sumber daya Anda. Jika Anda sudah membuka grup sumber daya, pilih Refresh.
Anda akan melihat bahwa akun penyimpanan tambahan telah disebarkan untuk tujuan audit.
Pilih server logis Anda (cari sumber daya dengan jenis server SQL).
Di bidang pencarian, masukkan Audit. Di bagianKeamanan, pilih Audit.
Verifikasi bahwa audit diaktifkan untuk server logis ini.