แบบฝึกหัด - ปรับโครงสร้างไฟล์ Bicep ของคุณใหม่เพื่อใช้โมดูล
Note
แบบฝึกหัดนี้เป็นแบบทางเลือก หากคุณต้องการทําแบบฝึกหัดนี้ให้เสร็จสมบูรณ์ คุณจะต้องสร้างการสมัครใช้งาน Azure ก่อนที่คุณจะเริ่มต้น หากคุณไม่มีบัญชี Azure หรือไม่ต้องการสร้างบัญชีในขณะนี้ คุณสามารถอ่านคําแนะนําเพื่อให้คุณเข้าใจข้อมูลที่นําเสนอ
ในแบบฝึกหัดนี้ คุณจะอัปเดตไฟล์ Bicep ที่คุณสร้างไว้ก่อนหน้านี้เพื่อให้ใช้มอดูลสําหรับทรัพยากร Azure App Service โมดูลช่วยให้ความตั้งใจของไฟล์หลักชัดเจนยิ่งขึ้น คุณสามารถนําโมดูลบริการแอปกลับมาใช้ใหม่ในไฟล์ Bicep อื่นๆ ได้ถ้าคุณเลือก
ในระหว่างกระบวนการ คุณจะ:
- เพิ่มมอดูลใหม่และย้ายทรัพยากร App Service ไปยังมอดูลนั้น
- อ้างอิงโมดูลจากไฟล์ Bicep หลัก
- เพิ่มผลลัพธ์สําหรับชื่อโฮสต์ของแอป App Service และปล่อยออกมาจากการปรับใช้ไฟล์โมดูลและ Bicep
- ทดสอบการปรับใช้เพื่อให้แน่ใจว่าไฟล์ Bicep ถูกต้อง
เพิ่มไฟล์มอดูลใหม่
ในรหัส Visual Studio ให้สร้างโฟลเดอร์ใหม่ที่เรียกว่า มอดูล ในโฟลเดอร์เดียวกันกับที่คุณสร้างไฟล์ main.bicep ของคุณ ในโฟลเดอร์ โมดูล ให้สร้างไฟล์ที่เรียกว่า appService.bicep บันทึกไฟล์
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ appService.bicep:
param location string param appServiceAppName string @allowed([ 'nonprod' 'prod' ]) param environmentType string var appServicePlanName = 'toy-product-launch-plan' var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1' resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = { name: appServicePlanName location: location sku: { name: appServicePlanSkuName } } resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = { name: appServiceAppName location: location properties: { serverFarmId: appServicePlan.id httpsOnly: true } }โปรดสังเกตว่าคุณได้คัดลอกพารามิเตอร์และตัวแปรจากไฟล์ main.bicep Bicep ของคุณแล้ว เนื่องจากไฟล์ appService.bicep Bicep จําเป็นต้องมีอยู่ในตัวเอง
บันทึกการเปลี่ยนแปลงไปยังไฟล์ โปรดสังเกตว่า Visual Studio Code ไม่แสดงเส้นหยักสีแดงเพื่อระบุคําเตือนเกี่ยวกับตัวแปรที่ขาดหายไป พารามิเตอร์ที่หายไป หรือทรัพยากรที่ไม่ถูกต้อง
เพิ่มการอ้างอิงไปยังโมดูลจากไฟล์ Bicep หลัก
หลังจากที่คุณมีมอดูลที่สมบูรณ์เพื่อปรับใช้ทรัพยากร App Service คุณสามารถอ้างอิงไปยังโมดูลภายในไฟล์ Bicep หลักได้ เนื่องจากโมดูลปรับใช้ทรัพยากรของ App Service คุณสามารถลบทรัพยากรและตัวแปรที่เกี่ยวข้องจากไฟล์หลักได้
ในไฟล์ main.bicep ลบทรัพยากรของ App Service และข้อกําหนดตัวแปร
appServicePlanNameและappServicePlanSkuNameอย่าลบพารามิเตอร์ App Service เนื่องจากคุณยังคงต้องการพารามิเตอร์เหล่านั้น นอกจากนี้ อย่าลบพารามิเตอร์บัญชีที่เก็บข้อมูล ตัวแปร หรือทรัพยากรที่ด้านล่างของไฟล์ main.bicep ให้เพิ่มรหัส Bicep ต่อไปนี้:
module appService 'modules/appService.bicep' = { name: 'appService' params: { location: location appServiceAppName: appServiceAppName environmentType: environmentType } }โปรดสังเกตว่าคุณกําลังระบุพารามิเตอร์สําหรับโมดูลของคุณโดยการอ้างอิงพารามิเตอร์ในไฟล์ Bicep หลัก
บันทึกการเปลี่ยนแปลงไปยังไฟล์
เพิ่มชื่อโฮสต์เป็นเอาต์พุต
เพิ่มรหัส Bicep ต่อไปนี้ที่ด้านล่างของไฟล์ appService.bicep:
output appServiceAppHostName string = appServiceApp.properties.defaultHostNameรหัสนี้จะประกาศว่าเอาต์พุตสําหรับโมดูลนี้ซึ่งจะถูกตั้งชื่อ
appServiceAppHostNameจะเป็นชนิดstringผลลัพธ์จะใช้ค่าจากคุณสมบัติdefaultHostNameของแอป App Serviceบันทึกการเปลี่ยนแปลงไปยังไฟล์
ผลลัพธ์นี้ถูกประกาศภายในไฟล์ Bicep ที่เราจะใช้เป็นมอดูล ดังนั้นจึงจะพร้อมใช้งานเฉพาะกับไฟล์ Bicep หลักเท่านั้น คุณยังจําเป็นต้องส่งกลับผลลัพธ์ไปยังบุคคลที่ปรับใช้ไฟล์
เปิดไฟล์ main.bicep และเพิ่มโค้ดต่อไปนี้ที่ด้านล่างของไฟล์:
output appServiceAppHostName string = appService.outputs.appServiceAppHostNameโปรดสังเกตว่ามีการประกาศเอาต์พุตนี้ในลักษณะที่คล้ายกับเอาต์พุตในโมดูล แต่คราวนี้ คุณกําลังอ้างอิงเอาต์พุตของมอดูลแทนที่จะเป็นคุณสมบัติทรัพยากร
บันทึกการเปลี่ยนแปลงไปยังไฟล์
ตรวจสอบไฟล์ Bicep ของคุณ
หลังจากที่คุณทําการเปลี่ยนแปลงก่อนหน้านี้ทั้งหมดเสร็จสิ้นแล้ว ไฟล์ main.bicep ของคุณควรมีลักษณะดังนี้:
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 storageAccountSkuName = (environmentType == 'prod') ? 'Standard_GRS' : 'Standard_LRS'
resource storageAccount 'Microsoft.Storage/storageAccounts@2023-05-01' = {
name: storageAccountName
location: location
sku: {
name: storageAccountSkuName
}
kind: 'StorageV2'
properties: {
accessTier: 'Hot'
}
}
module appService 'modules/appService.bicep' = {
name: 'appService'
params: {
location: location
appServiceAppName: appServiceAppName
environmentType: environmentType
}
}
output appServiceAppHostName string = appService.outputs.appServiceAppHostName
ไฟล์ appService.bicep ของคุณควรมีลักษณะดังตัวอย่างนี้:
param location string
param appServiceAppName string
@allowed([
'nonprod'
'prod'
])
param environmentType string
var appServicePlanName = 'toy-product-launch-plan'
var appServicePlanSkuName = (environmentType == 'prod') ? 'P2v3' : 'F1'
resource appServicePlan 'Microsoft.Web/serverfarms@2024-04-01' = {
name: appServicePlanName
location: location
sku: {
name: appServicePlanSkuName
}
}
resource appServiceApp 'Microsoft.Web/sites@2024-04-01' = {
name: appServiceAppName
location: location
properties: {
serverFarmId: appServicePlan.id
httpsOnly: true
}
}
output appServiceAppHostName string = appServiceApp.properties.defaultHostName
หากไฟล์ Bicep ไม่ตรงกัน ให้คัดลอกตัวอย่างหรือปรับไฟล์ของคุณให้ตรงกับตัวอย่าง
ปรับใช้ไฟล์ Bicep ที่อัปเดตแล้ว
เรียกใช้คําสั่ง Azure CLI ต่อไปนี้ในเทอร์มินัล
az deployment group create \
--name main \
--template-file main.bicep \
--parameters environmentType=nonprod
เรียกใช้คําสั่ง Azure PowerShell ต่อไปนี้ในเทอร์มินัล
New-AzResourceGroupDeployment `
-Name main `
-TemplateFile main.bicep `
-environmentType nonprod
ตรวจสอบการปรับใช้ของคุณ
ในเบราว์เซอร์ของคุณ ย้อนกลับไปยังพอร์ทัล Azure ไปยังกลุ่มทรัพยากรของคุณ ขณะนี้มีการปรับใช้ที่สําเร็จสองรายการ
เลือกลิงก์ สําเร็จ 2 โปรดสังเกตว่า คุณมีการปรับใช้ที่เรียกว่า หลักในรายการ และการปรับใช้ใหม่ที่เรียกว่า appService
เลือกการปรับใช้ที่เรียกว่า หลัก จากนั้นเลือก รายละเอียดการปรับใช้ เพื่อขยายรายการของทรัพยากรที่ปรับใช้
โปรดสังเกตว่าการปรับใช้มอดูลของเราปรากฏในรายการ
เลือกแท็บ เอาต์พุต โปรดสังเกตว่า มีเอาต์พุตที่เรียกว่า appServiceAppHostName ที่มีชื่อโฮสต์ของแอปบริการแอปของคุณ คัดลอกชื่อโฮสต์ไปยังคลิปบอร์ดของคุณ
เปิดแท็บเบราว์เซอร์ใหม่และวางชื่อโฮสต์ที่คุณคัดลอก คุณควรเห็นหน้ายินดีต้อนรับของบริการแอปเริ่มต้น
ยินดีด้วย! คุณได้ปรับใช้พื้นฐานสําหรับแอปที่ยอดเยี่ยมเรียบร้อยแล้ว