สร้างและใช้โมดูล Bicep

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

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

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

ประโยชน์ของโมดูล

ในบริษัทของเล่นของคุณ คุณได้เตรียมใช้งานทรัพยากรระบบคลาวด์โดยใช้ไฟล์ Bicep หลายไฟล์ เมื่อเวลาผ่านไป เทมเพลตเหล่านี้ขยายเพิ่มขึ้นอย่างมาก ในที่สุดคุณก็มีรหัสโมโนลิธิคที่อ่านและนําทางได้ยากและยากขึ้นในการบํารุงรักษา

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

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

ความสามารถในการนํากลับมาใช้ใหม่

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

ไดอะแกรมที่แสดงโมดูลที่อ้างอิงแม่แบบสามโมดูล: แอปพลิเคชัน ฐานข้อมูล และเครือข่าย มอดูลระบบเครือข่ายจะนํามาใช้ใหม่ในแม่แบบอื่น

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

การห่อหุ้ม

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

ด้วยวิธี เทมเพลตหลักของคุณไม่จําเป็นต้องทราบรายละเอียดของวิธีปรับใช้แอปฟังก์ชัน นั่นเป็นความรับผิดชอบของมอดูล

ความสามารถในการย่อยสลาย

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

แผนภาพที่แสดงเทมเพลตที่อ้างอิงสองโมดูลและส่งผ่านเอาต์พุตจากหนึ่งไปยังพารามิเตอร์ของอีกโมดูลหนึ่ง

ปลาย

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

ฟังก์ชัน

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

สร้างมอดูล

มอดูลคือไฟล์ Bicep ปกติ คุณจะสร้างเหมือนกับที่คุณทํากับไฟล์ Bicep อื่น ๆ

โดยทั่วไปแล้ว การสร้างมอดูลสําหรับทรัพยากรทุกรายการที่คุณปรับใช้ไม่ใช่แนวทางปฏิบัติที่ดี โดยทั่วไปโมดูล Bicep ที่ดีจะกําหนดทรัพยากรที่เกี่ยวข้องหลายรายการ อย่างไรก็ตาม หากคุณมีทรัพยากรที่ซับซ้อนที่มีการกําหนดค่าจํานวนมาก อาจสมเหตุสมผลที่จะสร้างโมดูลเดียวเพื่อห่อหุ้มความซับซ้อน วิธีนี้ช่วยให้เทมเพลตหลักของคุณง่ายและเป็นระเบียบ

แยกเทมเพลต Bicep ที่มีอยู่ออกเป็นโมดูล

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

ตัวแสดงภาพ Bicep สามารถช่วยให้คุณใส่ไฟล์ Bicep ทั้งหมดของคุณในมุมมอง visualizer จะรวมอยู่ในส่วนขยาย Bicep สําหรับ Visual Studio Code

เมื่อต้องการดูตัวแสดงภาพ ให้เปิด Visual Studio Code Explorer เลือกไฟล์ Bicep ค้างไว้ (หรือคลิกขวา) จากนั้นเลือก Open Bicep Visualizer ตัวแสดงภาพจะแสดงการแสดงภาพกราฟิกของทรัพยากรในไฟล์ Bicep ของคุณ ซึ่งประกอบด้วยบรรทัดระหว่างทรัพยากรเพื่อแสดงการขึ้นต่อกันที่ Bicep ตรวจพบ

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

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

โมดูล Nest

โมดูลสามารถประกอบด้วยโมดูลอื่น ๆ ด้วยการใช้เทคนิคการซ้อนนี้ คุณสามารถสร้างโมดูลบางอย่างที่ใช้ชุดทรัพยากรขนาดเล็ก จากนั้นเขียนชุดเหล่านี้ลงในโมดูลขนาดใหญ่ที่กําหนดโทโพโลยีของทรัพยากรที่ซับซ้อน เทมเพลตจะรวมชิ้นส่วนเหล่านี้ลงในวัตถุที่ปรับใช้ได้

ปลาย

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

สําหรับการปรับใช้ที่ซับซ้อน บางครั้งมีความเหมาะสมที่จะใช้ไปป์ไลน์การปรับใช้เพื่อปรับใช้เทมเพลตหลายรายการแทนที่จะสร้างเทมเพลตเดียวที่ทําทุกอย่างด้วยการซ้อนกัน คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับไปป์ไลน์การปรับใช้ในโมดูล Microsoft Learn ในอนาคต

เลือกชื่อไฟล์ที่ดี

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

ใช้โมดูลในเทมเพลต Bicep

คุณสามารถใช้โมดูลในเทมเพลต Bicep ได้โดยใช้คํา module สําคัญดังนี้:

module appModule 'modules/app.bicep' = {
  name: 'myApp'
  params: {
    location: location
    appServiceAppName: appServiceAppName
    environmentType: environmentType
  }
}

ข้อกําหนดของโมดูลประกอบด้วยคอมโพเนนต์ต่อไปนี้:

  • คําสําคัญ module
  • ชื่อสัญลักษณ์ เช่น appModule ชื่อนี้ถูกใช้ภายในไฟล์ Bicep นี้เมื่อใดก็ตามที่คุณต้องการอ้างอิงไปยังโมดูล ชื่อสัญลักษณ์จะไม่ปรากฏใน Azure
  • เส้นทางของโมดูล เช่น modules/app.bicep นี่คือเส้นทางไปยังไฟล์ Bicep ในระบบไฟล์ภายในเครื่องของคุณ ในมอดูล Microsoft Learn ในอนาคต คุณจะได้เรียนรู้เกี่ยวกับวิธีที่คุณสามารถแชร์โมดูลโดยใช้การลงทะเบียนและข้อมูลจําเพาะของเทมเพลตซึ่งมีรูปแบบเส้นทางโมดูลของตนเอง

    ปลาย

    คุณยังสามารถใช้เทมเพลต JSON Azure Resource Manager (เทมเพลต ARM) เป็นมอดูลได้ ความสามารถนี้จะเป็นประโยชน์ถ้าคุณมีชุดเทมเพลตที่คุณยังไม่ได้โยกย้ายไปยัง Bicep

  • คุณสมบัติ name ซึ่งระบุชื่อของการปรับใช้ คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับการปรับใช้ในส่วนถัดไป
  • คุณสมบัติ params ซึ่งคุณสามารถระบุค่าสําหรับพารามิเตอร์ที่โมดูลต้องการได้ คุณจะได้เรียนรู้เพิ่มเติมเกี่ยวกับพารามิเตอร์โมดูลในหน่วยถัดไป

วิธีการทํางานของโมดูล

การทําความเข้าใจวิธีการทํางานของโมดูลไม่จําเป็นสําหรับการใช้งาน แต่สามารถช่วยให้คุณตรวจสอบปัญหาเกี่ยวกับการปรับใช้ของคุณ หรือช่วยอธิบายลักษณะการทํางานที่ไม่คาดคิดได้

การปรับใช้

ใน Azure การปรับใช้ เป็นทรัพยากรพิเศษที่แสดงถึงการดําเนินการปรับใช้ การปรับใช้เป็นทรัพยากร Azure ที่มีชนิดทรัพยากร Microsoft.Resources/deployments เมื่อคุณส่งการปรับใช้ Bicep คุณจะสร้างหรืออัปเดตทรัพยากรการปรับใช้ ในทํานองเดียวกัน เมื่อคุณสร้างทรัพยากรในพอร์ทัล Azure พอร์ทัลจะสร้างทรัพยากรการปรับใช้ในนามของคุณ

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

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

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

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

แผนภาพที่แสดงไฟล์ Bicep สองไฟล์ ซึ่งแต่ละไฟล์มีชื่อการปรับใช้แยกต่างหาก

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

สร้างเทมเพลต JSON ARM

เมื่อคุณปรับใช้ไฟล์ Bicep, Bicep จะแปลงเป็นเทมเพลต JSON ARM การแปลงนี้ยังเรียกว่า การแปลอีกด้วย โมดูลที่เทมเพลตใช้ถูกฝังลงในไฟล์ JSON ไม่ว่าคุณจะมีมอดูลจํานวนเท่าใดในเทมเพลตของคุณ จะสร้างไฟล์ JSON เพียงไฟล์เดียวเท่านั้น

ในตัวอย่างในส่วนก่อนหน้านี้ Bicep สร้างไฟล์ JSON เดียวแม้ว่าจะมีไฟล์ Bicep สองไฟล์เดิม

แผนภาพที่แสดงไฟล์ Bicep สองไฟล์ ซึ่งถูกสลับแถวเป็นไฟล์ JSON เดียว