แบบฝึกหัด - ปรับโครงสร้างไฟล์ Bicep ของคุณใหม่เพื่อใช้โมดูล

เสร็จสมบูรณ์เมื่อ

Note

แบบฝึกหัดนี้เป็นแบบทางเลือก หากคุณต้องการทําแบบฝึกหัดนี้ให้เสร็จสมบูรณ์ คุณจะต้องสร้างการสมัครใช้งาน Azure ก่อนที่คุณจะเริ่มต้น หากคุณไม่มีบัญชี Azure หรือไม่ต้องการสร้างบัญชีในขณะนี้ คุณสามารถอ่านคําแนะนําเพื่อให้คุณเข้าใจข้อมูลที่นําเสนอ

ในแบบฝึกหัดนี้ คุณจะอัปเดตไฟล์ Bicep ที่คุณสร้างไว้ก่อนหน้านี้เพื่อให้ใช้มอดูลสําหรับทรัพยากร Azure App Service โมดูลช่วยให้ความตั้งใจของไฟล์หลักชัดเจนยิ่งขึ้น คุณสามารถนําโมดูลบริการแอปกลับมาใช้ใหม่ในไฟล์ Bicep อื่นๆ ได้ถ้าคุณเลือก

ในระหว่างกระบวนการ คุณจะ:

  • เพิ่มมอดูลใหม่และย้ายทรัพยากร App Service ไปยังมอดูลนั้น
  • อ้างอิงโมดูลจากไฟล์ Bicep หลัก
  • เพิ่มผลลัพธ์สําหรับชื่อโฮสต์ของแอป App Service และปล่อยออกมาจากการปรับใช้ไฟล์โมดูลและ Bicep
  • ทดสอบการปรับใช้เพื่อให้แน่ใจว่าไฟล์ Bicep ถูกต้อง

เพิ่มไฟล์มอดูลใหม่

  1. ในรหัส Visual Studio ให้สร้างโฟลเดอร์ใหม่ที่เรียกว่า มอดูล ในโฟลเดอร์เดียวกันกับที่คุณสร้างไฟล์ main.bicep ของคุณ ในโฟลเดอร์ โมดูล ให้สร้างไฟล์ที่เรียกว่า appService.bicep บันทึกไฟล์

  2. เพิ่มเนื้อหาต่อไปนี้ลงในไฟล์ 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 จําเป็นต้องมีอยู่ในตัวเอง

  3. บันทึกการเปลี่ยนแปลงไปยังไฟล์ โปรดสังเกตว่า Visual Studio Code ไม่แสดงเส้นหยักสีแดงเพื่อระบุคําเตือนเกี่ยวกับตัวแปรที่ขาดหายไป พารามิเตอร์ที่หายไป หรือทรัพยากรที่ไม่ถูกต้อง

เพิ่มการอ้างอิงไปยังโมดูลจากไฟล์ Bicep หลัก

หลังจากที่คุณมีมอดูลที่สมบูรณ์เพื่อปรับใช้ทรัพยากร App Service คุณสามารถอ้างอิงไปยังโมดูลภายในไฟล์ Bicep หลักได้ เนื่องจากโมดูลปรับใช้ทรัพยากรของ App Service คุณสามารถลบทรัพยากรและตัวแปรที่เกี่ยวข้องจากไฟล์หลักได้

  1. ในไฟล์ main.bicep ลบทรัพยากรของ App Service และข้อกําหนดตัวแปร appServicePlanName และ appServicePlanSkuName อย่าลบพารามิเตอร์ App Service เนื่องจากคุณยังคงต้องการพารามิเตอร์เหล่านั้น นอกจากนี้ อย่าลบพารามิเตอร์บัญชีที่เก็บข้อมูล ตัวแปร หรือทรัพยากร

  2. ที่ด้านล่างของไฟล์ main.bicep ให้เพิ่มรหัส Bicep ต่อไปนี้:

    module appService 'modules/appService.bicep' = {
      name: 'appService'
      params: {
        location: location
        appServiceAppName: appServiceAppName
        environmentType: environmentType
      }
    }
    

    โปรดสังเกตว่าคุณกําลังระบุพารามิเตอร์สําหรับโมดูลของคุณโดยการอ้างอิงพารามิเตอร์ในไฟล์ Bicep หลัก

  3. บันทึกการเปลี่ยนแปลงไปยังไฟล์

เพิ่มชื่อโฮสต์เป็นเอาต์พุต

  1. เพิ่มรหัส Bicep ต่อไปนี้ที่ด้านล่างของไฟล์ appService.bicep:

    output appServiceAppHostName string = appServiceApp.properties.defaultHostName
    

    รหัสนี้จะประกาศว่าเอาต์พุตสําหรับโมดูลนี้ซึ่งจะถูกตั้งชื่อ appServiceAppHostNameจะเป็นชนิด string ผลลัพธ์จะใช้ค่าจากคุณสมบัติ defaultHostName ของแอป App Service

  2. บันทึกการเปลี่ยนแปลงไปยังไฟล์

    ผลลัพธ์นี้ถูกประกาศภายในไฟล์ Bicep ที่เราจะใช้เป็นมอดูล ดังนั้นจึงจะพร้อมใช้งานเฉพาะกับไฟล์ Bicep หลักเท่านั้น คุณยังจําเป็นต้องส่งกลับผลลัพธ์ไปยังบุคคลที่ปรับใช้ไฟล์

  3. เปิดไฟล์ main.bicep และเพิ่มโค้ดต่อไปนี้ที่ด้านล่างของไฟล์:

    output appServiceAppHostName string = appService.outputs.appServiceAppHostName
    

    โปรดสังเกตว่ามีการประกาศเอาต์พุตนี้ในลักษณะที่คล้ายกับเอาต์พุตในโมดูล แต่คราวนี้ คุณกําลังอ้างอิงเอาต์พุตของมอดูลแทนที่จะเป็นคุณสมบัติทรัพยากร

  4. บันทึกการเปลี่ยนแปลงไปยังไฟล์

ตรวจสอบไฟล์ 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

ตรวจสอบการปรับใช้ของคุณ

  1. ในเบราว์เซอร์ของคุณ ย้อนกลับไปยังพอร์ทัล Azure ไปยังกลุ่มทรัพยากรของคุณ ขณะนี้มีการปรับใช้ที่สําเร็จสองรายการ

  2. เลือกลิงก์ สําเร็จ 2 โปรดสังเกตว่า คุณมีการปรับใช้ที่เรียกว่า หลักในรายการ และการปรับใช้ใหม่ที่เรียกว่า appService

    สกรีนช็อตของอินเทอร์เฟซพอร์ทัล Azure สําหรับการปรับใช้ ด้วยการปรับใช้สองรายการที่แสดงไว้และสถานะที่ประสบความสําเร็จ

  3. เลือกการปรับใช้ที่เรียกว่า หลัก จากนั้นเลือก รายละเอียดการปรับใช้ เพื่อขยายรายการของทรัพยากรที่ปรับใช้

    โปรดสังเกตว่าการปรับใช้มอดูลของเราปรากฏในรายการ

    สกรีนช็อตของอินเทอร์เฟซพอร์ทัล Azure สําหรับการปรับใช้เฉพาะที่มีทรัพยากรหนึ่งรายการ

  4. เลือกแท็บ เอาต์พุต โปรดสังเกตว่า มีเอาต์พุตที่เรียกว่า appServiceAppHostName ที่มีชื่อโฮสต์ของแอปบริการแอปของคุณ คัดลอกชื่อโฮสต์ไปยังคลิปบอร์ดของคุณ

    สกรีนช็อตของอินเทอร์เฟซพอร์ทัล Azure สําหรับผลลัพธ์ของการปรับใช้เฉพาะ

  5. เปิดแท็บเบราว์เซอร์ใหม่และวางชื่อโฮสต์ที่คุณคัดลอก คุณควรเห็นหน้ายินดีต้อนรับของบริการแอปเริ่มต้น

    สกรีนช็อตของหน้ายินดีต้อนรับสู่บริการแอปเริ่มต้น

ยินดีด้วย! คุณได้ปรับใช้พื้นฐานสําหรับแอปที่ยอดเยี่ยมเรียบร้อยแล้ว