แบบฝึกหัด - สร้างและใช้โมดูล
คุณได้รับมอบหมายให้เพิ่มเครือข่ายจัดส่งเนื้อหาหรือ CDN ไปยังเว็บไซต์ของบริษัทของคุณสําหรับการเปิดตัวของของเล่นวูมแบต อย่างไรก็ตาม ทีมอื่นๆ ในบริษัทของคุณได้บอกคุณว่าพวกเขาไม่ต้องการ CDN ในแบบฝึกหัดนี้ คุณจะสร้างมอดูลสําหรับเว็บไซต์และ CDN และคุณจะเพิ่มมอดูลลงในเทมเพลต
ในระหว่างกระบวนการ คุณจะ:
- เพิ่มมอดูลสําหรับแอปพลิเคชันของคุณ
- สร้างเทมเพลต Bicep ที่ใช้โมดูล
- เพิ่มมอดูลอื่นสําหรับ CDN
- เพิ่มโมดูล CDN ไปยังเทมเพลตของคุณในขณะที่ทําให้เป็นทางเลือก
- ปรับใช้เทมเพลตกับ Azure
- ตรวจสอบประวัติการปรับใช้
Note
แบบฝึกหัดนี้เป็นแบบทางเลือก หากคุณต้องการทําแบบฝึกหัดนี้ให้เสร็จสมบูรณ์ คุณจะต้องสร้างการสมัครใช้งาน Azure ก่อนที่คุณจะเริ่มต้น หากคุณไม่มีบัญชี Azure หรือไม่ต้องการสร้างบัญชีในขณะนี้ คุณสามารถอ่านคําแนะนําเพื่อให้คุณเข้าใจข้อมูลที่นําเสนอ
แบบฝึกหัดนี้ใช้ส่วนขยาย Bicep สําหรับ Visual Studio Code ตรวจสอบให้แน่ใจว่าได้ติดตั้งส่วนขยายนี้ใน Visual Studio Code
Note
คุณต้องใช้กลุ่มทรัพยากรเพื่อทําตามขั้นตอนในแบบฝึกหัดนี้ให้เสร็จสมบูรณ์ คุณสามารถใช้กลุ่มทรัพยากรที่คุณสร้างไว้แล้ว หรือคุณสามารถสร้างกลุ่มทรัพยากรใหม่สําหรับแบบฝึกหัดนี้โดยเฉพาะ ถ้าคุณเลือกที่จะสร้างกลุ่มทรัพยากรใหม่ ซึ่งจะทําให้ง่ายต่อการล้างทรัพยากรใดๆ ที่คุณสร้างขึ้นเมื่อคุณทําแบบฝึกหัดเสร็จแล้ว ถ้าคุณไม่มีกลุ่มทรัพยากรที่มีอยู่ หรือต้องการสร้างกลุ่มใหม่สําหรับแบบฝึกหัดนี้โดยเฉพาะ คุณสามารถทําตามขั้นตอนใน ใช้พอร์ทัล Azure และ Azure Resource Manager เพื่อจัดการกลุ่มทรัพยากรเพื่อสร้าง กลุ่มทรัพยากรโดยใช้พอร์ทัล Azure หรือคุณสามารถทําตามขั้นตอนใน จัดการกลุ่มทรัพยากร Azure โดยใช้ Azure CLI เพื่อสร้างกลุ่มทรัพยากรโดยใช้ Azure CLI
Note
ตลอดแบบฝึกหัดนี้ ให้แทนที่ myResourceGroupName ในตัวอย่างด้วยชื่อของกลุ่มทรัพยากรที่มีอยู่ หรือชื่อของกลุ่มทรัพยากรที่คุณสร้างขึ้นสําหรับแบบฝึกหัดนี้
สร้างไฟล์ Bicep ที่ว่างเปล่า
เปิด Visual Studio Code
สร้างไฟล์ใหม่ที่เรียกว่า main.bicep
บันทึกไฟล์เปล่าเพื่อให้ Visual Studio Code โหลดเครื่องมือ Bicep
คุณสามารถเลือกไฟล์ >บันทึกเป็น หรือเลือก Ctrl + S บน Windows (⌘+ S บน macOS) อย่าลืมจดจําตําแหน่งที่คุณบันทึกไฟล์ ตัวอย่างเช่น คุณอาจต้องการสร้างเทมเพลต โฟลเดอร์เพื่อบันทึก
สร้างมอดูลสําหรับแอปพลิเคชันของคุณ
สร้างโฟลเดอร์ใหม่ที่เรียกว่า โมดูล ในโฟลเดอร์เดียวกันกับที่คุณสร้างไฟล์ main.bicep ของคุณ ในโฟลเดอร์ โมดูล ให้สร้างไฟล์ที่เรียกว่า app.bicep บันทึกไฟล์
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ app.bicep:
@description('The Azure region into which the resources should be deployed.') param location string @description('The name of the App Service app.') param appServiceAppName string @description('The name of the App Service plan.') param appServicePlanName string @description('The name of the App Service plan SKU.') param appServicePlanSkuName string 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 } } @description('The default host name of the App Service app.') output appServiceAppHostName string = appServiceApp.properties.defaultHostNameไฟล์นี้ปรับใช้แผนบริการแอป Azure และแอป โปรดสังเกตว่าโมดูลเป็นแบบทั่วไป ซึ่งไม่รวมถึงสมมติฐานใด ๆ เกี่ยวกับชื่อของทรัพยากร หรือ SKU ของแผนบริการแอป ซึ่งทําให้ง่ายต่อการนําโมดูลกลับมาใช้ใหม่สําหรับการปรับใช้ที่แตกต่างกัน
บันทึกการเปลี่ยนแปลงไปยังไฟล์
เพิ่มมอดูลลงในเทมเพลต Bicep ของคุณ
ที่นี่ คุณเพิ่มแอป มอดูลไปยังเทมเพลต Bicep ของคุณเป็นจุดเริ่มต้น
เปิดไฟล์ main.bicep
เพิ่มพารามิเตอร์และตัวแปรต่อไปนี้ลงในไฟล์:
@description('The Azure region into which the resources should be deployed.') param location string = 'westus3' @description('The name of the App Service app.') param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}' @description('The name of the App Service plan SKU.') param appServicePlanSkuName string = 'F1' var appServicePlanName = 'toy-product-launch-plan'เนื่องจากเป็นเทมเพลตที่คุณต้องการปรับใช้สําหรับเว็บไซต์ของเล่นของคุณดังนั้นจึงมีความเฉพาะเจาะจงมากขึ้น ชื่อแผนบริการแอปถูกกําหนดเป็นตัวแปร พารามิเตอร์ SKU มีค่าเริ่มต้นที่เหมาะสมกับเว็บไซต์การเปิดใช้งานของเล่น
ด้านล่างพารามิเตอร์ สร้างบรรทัดว่าง ตอนนี้ พิมพ์บรรทัดแรกของข้อกําหนดโมดูลแอป:
module app 'modules/app.bicep' = {ขณะที่คุณพิมพ์ ให้สังเกตว่าส่วนขยาย Bicep สําหรับ Visual Studio Code ช่วยให้คุณสามารถยกระดับการประกาศโมดูลได้ เมื่อคุณพิมพ์เส้นทางไปยังโมดูลของคุณและพิมพ์อักขระเท่ากับ (
=) เมนูป็อปอัพจะปรากฏขึ้นพร้อมตัวเลือกหลายตัวเลือกคุณสมบัติที่จําเป็น จากเมนูป็อปอัพ:
ทําการรายงานโมดูลให้เสร็จสมบูรณ์:
module app 'modules/app.bicep' = { name: 'toy-launch-app' params: { appServiceAppName: appServiceAppName appServicePlanName: appServicePlanName appServicePlanSkuName: appServicePlanSkuName location: location } }ที่ด้านล่างของไฟล์ ให้กําหนดเอาต์พุต:
@description('The host name to use to access the website.') output websiteHostName string = app.outputs.appServiceAppHostNameบันทึกการเปลี่ยนแปลงไปยังไฟล์
สร้างโมดูลสําหรับเครือข่ายการจัดส่งเนื้อหา
ในโฟลเดอร์ โมดูล ให้สร้างไฟล์ที่เรียกว่า cdn.bicep บันทึกไฟล์
เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ cdn.bicep:
@description('The host name (address) of the origin server.') param originHostName string @description('The name of the CDN profile.') param profileName string = 'cdn-${uniqueString(resourceGroup().id)}' @description('The name of the CDN endpoint') param endpointName string = 'endpoint-${uniqueString(resourceGroup().id)}' @description('Indicates whether the CDN endpoint requires HTTPS connections.') param httpsOnly bool var originName = 'my-origin' resource cdnProfile 'Microsoft.Cdn/profiles@2024-09-01' = { name: profileName location: 'global' sku: { name: 'Standard_Microsoft' } } resource endpoint 'Microsoft.Cdn/profiles/endpoints@2024-09-01' = { parent: cdnProfile name: endpointName location: 'global' properties: { originHostHeader: originHostName isHttpAllowed: !httpsOnly isHttpsAllowed: true queryStringCachingBehavior: 'IgnoreQueryString' contentTypesToCompress: [ 'text/plain' 'text/html' 'text/css' 'application/x-javascript' 'text/javascript' ] isCompressionEnabled: true origins: [ { name: originName properties: { hostName: originHostName } } ] } } @description('The host name of the CDN endpoint.') output endpointHostName string = endpoint.properties.hostNameไฟล์นี้ใช้ทรัพยากรสองประเภท: โปรไฟล์ CDN และจุดสิ้นสุด CDN
บันทึกการเปลี่ยนแปลงไปยังไฟล์
เพิ่มโมดูลไปยังเทมเพลต Bicep หลัก
เปิดไฟล์ main.bicep
ใต้พารามิเตอร์
appServicePlanSkuNameให้เพิ่มพารามิเตอร์ต่อไปนี้:@description('Indicates whether a CDN should be deployed.') param deployCdn bool = trueด้านล่างข้อกําหนดโมดูล
appให้กําหนดโมดูลcdn:module cdn 'modules/cdn.bicep' = if (deployCdn) { name: 'toy-launch-cdn' params: { httpsOnly: true originHostName: app.outputs.appServiceAppHostName } }โปรดสังเกตว่าโมดูลมีเงื่อนไขเพื่อให้มีการปรับใช้เฉพาะเมื่อค่าพารามิเตอร์
deployCdnได้รับการตั้งค่าเป็นtrueนอกจากนี้ โปรดสังเกตว่าพารามิเตอร์originHostNameของโมดูลถูกตั้งค่าเป็นค่าของเอาต์พุตappServiceAppHostNameจากโมดูลappปรับปรุงผลลัพธ์ชื่อโฮสต์เพื่อให้เลือกชื่อโฮสต์ที่ถูกต้อง เมื่อมีการปรับใช้ CDN คุณต้องการให้ชื่อโฮสต์อยู่ในตําแหน่งข้อมูล CDN
output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostNameบันทึกการเปลี่ยนแปลงไปยังไฟล์
ตรวจสอบไฟล์ Bicep ของคุณ
หลังจากที่คุณทําการเปลี่ยนแปลงก่อนหน้านี้ทั้งหมดเสร็จสิ้นแล้ว ไฟล์ main.bicep ของคุณควรมีลักษณะดังนี้:
@description('The Azure region into which the resources should be deployed.')
param location string = 'westus3'
@description('The name of the App Service app.')
param appServiceAppName string = 'toy-${uniqueString(resourceGroup().id)}'
@description('The name of the App Service plan SKU.')
param appServicePlanSkuName string = 'F1'
@description('Indicates whether a CDN should be deployed.')
param deployCdn bool = true
var appServicePlanName = 'toy-product-launch-plan'
module app 'modules/app.bicep' = {
name: 'toy-launch-app'
params: {
appServiceAppName: appServiceAppName
appServicePlanName: appServicePlanName
appServicePlanSkuName: appServicePlanSkuName
location: location
}
}
module cdn 'modules/cdn.bicep' = if (deployCdn) {
name: 'toy-launch-cdn'
params: {
httpsOnly: true
originHostName: app.outputs.appServiceAppHostName
}
}
@description('The host name to use to access the website.')
output websiteHostName string = deployCdn ? cdn.outputs.endpointHostName : app.outputs.appServiceAppHostName
ถ้าไม่เป็นเช่นนั้น ให้คัดลอกตัวอย่างหรือปรับเทมเพลตของคุณให้ตรงกับตัวอย่าง
ปรับใช้เทมเพลต Bicep กับ Azure
หากต้องการปรับใช้เทมเพลตนี้กับ Azure คุณต้องลงชื่อเข้าใช้บัญชี Azure ของคุณจากเทอร์มินัล Visual Studio Code ตรวจสอบให้แน่ใจว่าคุณได้ติดตั้งเครื่องมือ Azure CLI แล้ว
บนเมนู เทอร์มินัล ให้เลือก เทอร์มินัลใหม่ หน้าต่างเทอร์มินัลมักจะเปิดในครึ่งล่างของหน้าจอของคุณ
หากหน้าต่างเทอร์มินัลแสดง bash ทางด้านขวา แสดงว่าเชลล์ที่ถูกต้องเปิดอยู่แล้ว อีกวิธีหนึ่งคือ ถ้าคุณเห็นไอคอน bash shell ทางด้านขวา คุณสามารถเลือกเพื่อเปิดใช้เชลล์
ถ้าเชลล์นอกเหนือจาก แบช ปรากฏขึ้น ให้เลือกลูกศรดรอปดาวน์เชลล์ จากนั้นเลือก Git Bash
ในเทอร์มินัล ไปที่ไดเรกทอรีที่คุณบันทึกเทมเพลตของคุณ ตัวอย่างเช่น หากคุณบันทึกเทมเพลตของคุณไปยังเทมเพลต โฟลเดอร์ คุณสามารถใช้คําสั่งนี้:
cd templates
ติดตั้ง Bicep
เรียกใช้คําสั่งต่อไปนี้เพื่อให้แน่ใจว่าคุณมี Bicep เวอร์ชันล่าสุด:
az bicep install && az bicep upgrade
ลงชื่อเข้าใช้ Azure โดยใช้ Azure CLI
ในเทอร์มินัลรหัส Visual Studio ให้ลงชื่อเข้าใช้ Azure โดยการเรียกใช้คําสั่งต่อไปนี้:
az loginในเบราว์เซอร์ที่เปิด ขึ้น ให้ลงชื่อเข้าใช้บัญชี Azure ของคุณ
เทอร์มินัล Visual Studio Code จะแสดงรายการการสมัครใช้งานที่เชื่อมโยงกับบัญชีนี้
ในรายการ ให้ค้นหาการสมัครใช้งานที่คุณต้องการใช้สําหรับแบบฝึกหัดนี้
หากพลาดรายการจากการลงชื่อเข้าใช้ คุณจะใช้ข้อมูลโค้ดต่อไปนี้เพื่อแสดงรายการการสมัครใช้บริการอีกครั้งได้
az account list --output tableตั้งค่าการสมัครใช้งานเริ่มต้นสําหรับคําสั่ง Azure CLI ทั้งหมดที่คุณเรียกใช้ในเซสชันนี้
az account set --subscription "Your Subscription Name or ID"
ปรับใช้เทมเพลตกับ Azure
เรียกใช้โค้ดต่อไปนี้จากเทอร์มินัลใน Visual Studio Code เพื่อปรับใช้เทมเพลต Bicep กับ Azure กระบวนการนี้อาจใช้เวลาหนึ่งหรือสองนาทีในการดําเนินการให้แล้วเสร็จ จากนั้นคุณจะได้รับการปรับใช้ที่ประสบความสําเร็จ
az deployment group create --name main --template-file main.bicep
Running... สถานะจะปรากฏในเทอร์มินัล
หากต้องการปรับใช้เทมเพลตนี้กับ Azure ให้ลงชื่อเข้าใช้บัญชี Azure ของคุณจากเทอร์มินัล Visual Studio Code ตรวจสอบให้แน่ใจว่าคุณได้ ติดตั้ง Azure PowerShell แล้ว
บนเมนู เทอร์มินัล ให้เลือก เทอร์มินัลใหม่ หน้าต่างเทอร์มินัลมักจะเปิดในครึ่งล่างของหน้าจอของคุณ
หากหน้าต่างเทอร์มินัลแสดง pwsh หรือ powershell ทางด้านขวาแสดงว่าเชลล์ที่ถูกต้องเปิดอยู่แล้ว อีกวิธีหนึ่งคือ ถ้าคุณเห็นไอคอนเชลล์ PowerShell ทางด้านขวา คุณสามารถเลือกเพื่อเปิดใช้เชลล์
ถ้าเชลล์อื่นนอกเหนือจาก pwsh หรือ powershell ปรากฏขึ้น ให้เลือกลูกศรดรอปดาวน์เชลล์ จากนั้น PowerShell
ในเทอร์มินัล ไปที่ไดเรกทอรีที่คุณบันทึกเทมเพลตของคุณ ตัวอย่างเช่น ถ้าคุณบันทึกเทมเพลตของคุณในโฟลเดอร์ เทมเพลต คุณสามารถใช้คําสั่งนี้:
Set-Location -Path templates
ติดตั้ง Bicep CLI
หากต้องการใช้ Bicep จาก Azure PowerShell ติดตั้งBicep CLI
ลงชื่อเข้าใช้ Azure โดยใช้ Azure PowerShell
ในเทอร์มินัลรหัส Visual Studio ให้ลงชื่อเข้าใช้ Azure โดยการเรียกใช้คําสั่งต่อไปนี้:
Connect-AzAccountในเบราว์เซอร์ที่เปิด ขึ้น ให้ลงชื่อเข้าใช้บัญชี Azure ของคุณ
รับรหัสของการสมัครใช้งานที่คุณต้องการใช้สําหรับแบบฝึกหัดนี้โดยเรียกใช้คําสั่งต่อไปนี้:
Get-AzSubscriptionID การสมัครใช้งานคือคอลัมน์ที่สอง คัดลอกคอลัมน์ที่สอง ดูเหมือน aaaa0a0a-bb1b-cc2c-dd3d-eeeeee4e4e4e
ตั้งค่าการสมัครใช้งานเริ่มต้นสําหรับคําสั่ง Azure PowerShell ทั้งหมดที่คุณเรียกใช้ในเซสชันนี้
Set-AzContext -SubscriptionId {Your subscription ID}
ปรับใช้เทมเพลตกับ Azure
ปรับใช้เทมเพลตกับ Azure โดยใช้คําสั่ง Azure PowerShell ต่อไปนี้ในเทอร์มินัล ซึ่งอาจใช้เวลาหนึ่งหรือสองนาทีในการดําเนินการให้แล้วเสร็จ จากนั้นคุณจะได้รับการปรับใช้ที่ประสบความสําเร็จ
New-AzResourceGroupDeployment -Name main -TemplateFile main.bicep
ตรวจสอบประวัติการปรับใช้
ลงชื่อเข้าใช้ พอร์ทัล Azure และตรวจสอบให้แน่ใจว่าคุณกําลังใช้การสมัครใช้งานที่เหมาะสม:
- เลือกอวาตาร์ของคุณที่มุมบนขวาของหน้า
- เลือก สลับไดเรกทอรี ในรายการ ให้เลือกไดเรกทอรีที่เหมาะสม
บนแผงด้านซ้าย เลือก กลุ่มทรัพยากร
เลือก myResourceGroupName
บนเมนูทางด้านซ้าย เลือก การปรับใช้ ภายใต้ การตั้งค่า
การปรับใช้สามรายการจะแสดงอยู่
เลือกการปรับใช้ หลัก และขยาย รายละเอียดการปรับใช้
โปรดสังเกตว่าทั้งสองโมดูลอยู่ในรายการ และชนิดของโมดูลดังกล่าวจะแสดงเป็น
Microsoft.Resources/deploymentsโมดูลจะแสดงเป็นสองครั้งเนื่องจากเอาต์พุตจะถูกอ้างอิงภายในเทมเพลต
เลือก ของเล่น toy-launch-cdn และ ของเล่น การปรับใช้และตรวจทานทรัพยากรที่ปรับใช้ในแต่ละส่วน โปรดสังเกตว่าสอดคล้องกับทรัพยากรที่กําหนดไว้ในโมดูลที่เกี่ยวข้อง
ทดสอบเว็บไซต์
เลือก การปรับใช้แอปของเล่น
เลือก เอาต์พุต
เลือกปุ่มคัดลอกสําหรับเอาต์พุต
appServiceAppHostNameบนแท็บเบราว์เซอร์ใหม่ ลองไปยังที่อยู่ที่คุณคัดลอกในขั้นตอนก่อนหน้า ที่อยู่ควรเริ่มต้นด้วย
https://
หน้ายินดีต้อนรับของบริการแอปจะปรากฏขึ้น ซึ่งแสดงว่าคุณได้ปรับใช้แอปเรียบร้อยแล้ว
ไปที่การปรับใช้ หลัก และเลือก เอาต์พุต
คัดลอกค่าของ
websiteHostNameเอาต์พุต โปรดสังเกตว่าชื่อโฮสต์นี้แตกต่างกันเนื่องจากเป็นชื่อโฮสต์ Azure Content Delivery Networkในแท็บเบราว์เซอร์ใหม่ ลองไปที่ชื่อโฮสต์ที่คุณคัดลอกในขั้นตอนก่อนหน้า เพิ่ม
https://ลงในจุดเริ่มต้นของที่อยู่จุดสิ้นสุด CDN จะใช้เวลาสักครู่เพื่อเปิดใช้งาน ถ้าคุณได้รับเพจ ไม่พบ ข้อผิดพลาด ให้รอสักครู่แล้วลองวางลิงก์อีกครั้ง นอกจากนี้ ตรวจสอบให้แน่ใจว่าคุณได้เพิ่ม
https://ลงในจุดเริ่มต้นของ URL เพื่อให้คุณกําลังใช้ HTTPSเมื่อตําแหน่งข้อมูล CDN เปิดใช้งาน คุณจะได้รับหน้ายินดีต้อนรับของบริการแอปเดียวกัน ในครั้งนี้ บริการนี้ให้บริการผ่านบริการ Azure Content Delivery Network ซึ่งจะช่วยปรับปรุงประสิทธิภาพของเว็บไซต์