Latihan - Menambahkan parameter dan variabel ke templat Bicep Anda
Dalam latihan ini, Anda akan memperbarui template Bicep yang telah Anda buat sebelumnya agar:
- Menerima parameter untuk lokasi dan nama sumber daya.
- Menggunakan aturan bisnis Anda untuk memilih SKU yang tepat untuk sumber daya yang digunakan.
Selama proses tersebut, Anda akan:
- Memperbarui templat untuk menyertakan parameter
location
. - Memperbarui templat untuk menyertakan parameter dan variabel nama sumber daya.
- Menggunakan ekspresi untuk mengatur nilai default parameter.
- Memperbarui templat untuk menyertakan variabel untuk SKU masing-masing sumber daya.
- Menguji penyebaran untuk memastikan templat valid.
Menambahkan parameter lokasi dan nama sumber daya
Dalam file main.bicep di Visual Studio Code, tambahkan kode berikut ke bagian atas file:
param location string = 'eastus' param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}' param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}' var appServicePlanName = 'toy-product-launch-plan'
Linter Bicep menambahkan garis berlekuk kuning di bawah setiap parameter dan nama variabel untuk menunjukkan bahwa garis tersebut tidak digunakan dalam templat. Anda akan segera memperbaiki masalah ini.
Perhatikan bahwa Anda menggunakan ekspresi yang menyertakan interpolasi string dan fungsi
uniqueString()
untuk menentukan nilai parameter default. Seseorang yang menyebarkan templat ini dapat mengambil alih nilai parameter default dengan menentukan nilai pada waktu penyebaran, tetapi mereka tidak dapat mengambil alih nilai variabel.Perhatikan juga bahwa Anda menggunakan variabel untuk nama paket Azure App Service, tetapi Anda menggunakan parameter untuk nama lain. Akun penyimpanan dan aplikasi App Service memerlukan nama yang unik secara global, tetapi nama paket App Service harus unik hanya dalam grup sumber dayanya. Perbedaan ini berarti tidak perlu khawatir untuk menggunakan nama paket App Service yang sama di berbagai penyebaran, selama semua penyebaran masuk ke grup sumber daya yang berbeda.
Tip
Anda menetapkan bahwa parameter
location
harus diatur kewestus3
. Biasanya, Anda akan membuat sumber daya di lokasi yang sama dengan grup sumber daya menggunakan propertiresourceGroup().location
. Namun saat Anda bekerja dengan kotak pasir Microsoft Learn, Anda perlu menggunakan wilayah Azure tertentu yang tidak cocok dengan lokasi grup sumber daya.Temukan tempat untuk mengatur properti
location
danname
dalam definisi sumber daya, dan perbarui untuk menggunakan nilai parameter. Setelah selesai, definisi sumber daya dalam file Bicep Anda akan terlihat seperti ini:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: 'Standard_LRS' } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: 'F1' } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Simpan perubahan pada file.
Mengatur SKU secara otomatis untuk setiap jenis lingkungan
Dalam file main.bicep di Visual Studio Code, tambahkan parameter Bicep berikut di bawah parameter yang Anda buat di tugas sebelumnya:
@allowed([ 'nonprod' 'prod' ]) param environmentType string
Perhatikan bahwa Anda mendefinisikan parameter dengan sekumpulan nilai yang diizinkan, tetapi Anda tidak menentukan nilai default untuk parameter ini.
Di bawah garis yang menyatakan variabel
appServicePlanName
, tambahkan definisi variabel berikut:var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
Perhatikan bahwa Anda mengatur nilai variabel ini dengan menggunakan operator terner untuk mengekspresikan beberapa
if/then/else
logika.Temukan tempat dalam definisi sumber daya tempat properti
sku
diatur dan perbarui untuk menggunakan nilai parameter. Setelah selesai, definisi sumber daya dalam file Bicep Anda akan terlihat seperti ini:resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = { name: storageAccountName location: location sku: { name: storageAccountSkuName } kind: 'StorageV2' properties: { accessTier: 'Hot' } } resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }
Perhatikan bahwa Anda belum membuat parameter untuk semuanya. Anda telah mengatur beberapa properti tepat dalam definisi sumber daya, di mana Anda tahu nilai-nilai ini tidak akan berubah di antara penyebaran.
Simpan perubahan pada file.
Memverifikasi file Bicep Anda
Setelah Anda menyelesaikan semua perubahan sebelumnya, file main.bicep Anda akan terlihat seperti contoh ini:
param location string = 'eastus'
param storageAccountName string = 'toylaunch${uniqueString(resourceGroup().id)}'
param appServiceAppName string = 'toylaunch${uniqueString(resourceGroup().id)}'
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource storageAccount 'Microsoft.Storage/storageAccounts@2022-09-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
resource appServicePlan 'Microsoft.Web/serverFarms@2022-03-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2022-03-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
Jika file Anda tidak cocok, salin contoh atau sesuaikan file Anda agar sesuai dengan contoh.
Menyebarkan templat Bicep yang diperbarui
Jalankan perintah Azure CLI berikut di terminal.
az deployment group create \
--template-file main.bicep \
--parameters environmentType=nonprod
Jalankan perintah Azure PowerShell berikut di terminal.
New-AzResourceGroupDeployment `
-TemplateFile main.bicep `
-environmentType nonprod
Perhatikan bahwa Anda secara eksplisit menentukan nilai parameter environmentType
saat menjalankan penyebaran. Anda tidak perlu menentukan nilai parameter lainnya, karena nilai parameter tersebut memiliki nilai default yang valid.
Memeriksa penyebaran Anda
Di browser Anda, kembali ke portal Azure dan buka grup sumber daya Anda. Anda tetap bisa melihat satu penyebaran yang berhasil karena penyebaran menggunakan nama yang sama dengan penyebaran pertama.
Pilih tautan 1 Berhasil.
Pilih penyebaran utama, lalu pilih Detail penyebaran untuk memperluas daftar sumber daya yang disebarkan.
Perhatikan bahwa aplikasi App Service dan akun penyimpanan baru telah disebarkan dengan nama yang dibuat secara acak.