Latihan - Menyebarkan sumber daya secara kondisional

Selesai

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

  1. Buka Visual Studio Code.

  2. Buat file baru yang disebut main.bicep.

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

  4. 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 parameter sqlServerAdministratorLogin dan sqlServerAdministratorLoginPassword 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.

  1. 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'
    
  2. 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 disebut take(). Nama akun penyimpanan memiliki panjang maksimum 24 karakter, sehingga fungsi ini memangkas akhiran string untuk memastikan bahwa nama tersebut valid.

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

  1. 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, properti storageEndpoint dan storageAccountAccessKey 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.

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

  1. Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.

  2. Jika shell yang ditampilkan di sisi kanan jendela terminal adalah bash, shell yang benar terbuka dan Anda dapat melompat ke bagian berikutnya.

    Screenshot of the Visual Studio Code terminal window, with the bash option shown.

  3. Jika shell selain bash muncul, pilih panah dropdown shell, lalu pilih Git Bash.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown shown and Git Bash Default selected.

  4. Dalam daftar shell terminal, pilih bash.

    Screenshot of the Visual Studio Code terminal window, with the bash terminal selected.

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

  1. Pada terminal Visual Studio Code, masuk ke Azure dengan menjalankan perintah berikut:

    az login
    
  2. Masuk ke akun Azure Anda melalui browser yang terbuka.

    Terminal Visual Studio Code menampilkan daftar langganan yang terkait dengan akun ini.

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

  4. Mendapatkan ID Langganan Concierge.

     az account list \
       --refresh \
       --query "[?contains(name, 'Concierge Subscription')].id" \
       --output table
    
  5. 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.

  1. Pada menu Terminal, pilih Terminal Baru. Jendela terminal biasanya terbuka di bagian bawah layar Anda.

  2. Jika shell yang ditampilkan di sisi kanan jendela terminal adalah powershell atau pwsh, shell yang benar terbuka, dan Anda dapat melompat ke bagian berikutnya.

    Screenshot of the Visual Studio Code terminal window, with the pwsh option displayed in the shell dropdown list.

  3. Jika shell selain powershell atau pwsh muncul, pilih panah dropdown shell, lalu pilih PowerShell.

    Screenshot of the Visual Studio Code terminal window, with the terminal shell dropdown list shown and PowerShell selected.

  4. Dalam daftar shell terminal, pilih powershell atau pwsh.

    Screenshot of the Visual Studio Code terminal window, with the PowerShell terminal selected.

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

  1. Di terminal Visual Studio Code, jalankan perintah berikut:

    Connect-AzAccount
    

    Browser terbuka sehingga Anda dapat masuk ke akun Azure.

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

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

  4. Dapatkan ID langganan. Menjalankan perintah berikut akan mencantumkan langganan Anda dan ID mereka. Cari Concierge Subscription, lalu salin ID dari kolom kedua. Ini terlihat seperti cf49fbbc-217c-4eb6-9eb5-a6a6c68295a0.

    Get-AzSubscription
    
  5. 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 seperti admin atau root. 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.

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

  2. Di panel kiri, pilih Grup sumber daya.

  3. Pilih [nama grup sumber daya kotak pasir].

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

    Screenshot of the Azure portal resource group overview pane, with a section displaying a successful deployment.

  5. Di samping Penyebaran, pilih 1 Berhasil untuk melihat detail penyebaran.

    Screenshot of the Azure portal resource group overview pane, displaying additional details of the successful deployment.

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

    Screenshot of the Azure portal resource group overview pane for the specific deployment, with a logical server and database resource listed.

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

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

    Screenshot of the Azure portal resource group overview pane, showing that a storage account is deployed for auditing.

  2. Pilih server logis Anda (cari sumber daya dengan jenis server SQL).

  3. Di bidang pencarian, masukkan Audit. Di bagianKeamanan, pilih Audit.

    Screenshot of the Azure portal interface for the logical server, showing the search field with Auditing entered.

  4. Verifikasi bahwa audit diaktifkan untuk server logis ini.

    Screenshot of the Azure portal interface for the logical server, showing that the auditing configuration is enabled.