เหตุใดจึงใช้เทมเพลต Azure Resource Manager
เทมเพลต Resource Manager หรือที่เรียกว่า เทมเพลต Azure Resource Manager เป็นไฟล์ JSON ที่กําหนดโครงสร้างพื้นฐานและการกําหนดค่าสําหรับการปรับใช้ Azure ของคุณ พวกเขาแสดงถึงแนวทางที่ทันสมัยสําหรับ โครงสร้างพื้นฐานเป็นโค้ด (IaC) แทนที่กระบวนการปรับใช้ด้วยตนเองและเกิดข้อผิดพลาดได้ง่าย
ความท้าทายในการปรับใช้ด้วยตนเอง
การจัดเตรียมโครงสร้างพื้นฐานสําหรับแอปพลิเคชันนั้นใช้เวลานานและต้องทําด้วยตนเอง คุณจะ:
- ทํางานผ่านตัวช่วยสร้างพอร์ทัล: คลิกผ่านหลายหน้าจอเพื่อสร้างทรัพยากรแต่ละรายการแยกกัน
- เรียกใช้สคริปต์ที่จําเป็น: ดําเนินการคําสั่งตามลําดับเฉพาะ โดยทําซ้ําสําหรับแต่ละสภาพแวดล้อม
- รักษาเอกสารที่ล้าสมัย: ดิ้นรนเพื่อให้เอกสารการกําหนดค่าซิงโครไนซ์กับการปรับใช้จริง
- เผชิญกับการปรับใช้การผลิตที่ตึงเครียด: การปรับใช้การผลิตด้วยตนเองจะเพิ่มความเสี่ยงต่อความผิดพลาดของมนุษย์
เทมเพลต ARM แก้ปัญหาเหล่านี้ โดยจัดเตรียมวิธีการประกาศที่คุณกําหนดทรัพยากรที่คุณต้องการ และ Azure Resource Manager จะจัดการการประสานการปรับใช้
ลดข้อผิดพลาดและเพิ่มความน่าเชื่อถือ
- ขจัดข้อผิดพลาดของมนุษย์: ขจัดความเสี่ยงของการพิมพ์ผิด ขั้นตอนที่พลาดไป หรือการกําหนดค่าที่ไม่ถูกต้อง
- ผลลัพธ์ที่คาดเดาได้: เทมเพลตเดียวกันจะสร้างสถานะโครงสร้างพื้นฐานเดียวกันเสมอ
- การตรวจสอบในตัว: Azure ตรวจสอบความถูกต้องของเทมเพลตก่อนการปรับใช้ โดยตรวจจับข้อผิดพลาดตั้งแต่เนิ่นๆ
รายการข้อดีของเทมเพลต ARM ทั้งหมด
พิจารณาใช้ เทมเพลต Resource Manager เมื่อคุณต้องการประโยชน์เหล่านี้:
- ปรับปรุงความสม่ําเสมอ
เทมเพลต Resource Manager มีภาษาทั่วไป สําหรับการอธิบายการปรับใช้ โดยไม่คํานึงถึงเครื่องมือ (พอร์ทัล Azure, Azure CLI, PowerShell หรือ SDK) โครงสร้างเทมเพลต รูปแบบ และนิพจน์ยังคงเหมือนกัน ความสอดคล้องนี้ทําให้มั่นใจได้ว่า:
การทํางานร่วมกันข้ามทีม: นักพัฒนาและทีมปฏิบัติการทํางานกับคําจํากัดความโครงสร้างพื้นฐานเดียวกัน
ความน่าเชื่อถือในหลายสภาพแวดล้อม: การพัฒนา การจัดเตรียม และการผลิตใช้โครงสร้างเทมเพลตเดียวกัน
แสดงการปรับใช้ที่ซับซ้อนอย่างชัดเจน
เทมเพลตช่วยให้คุณสามารถปรับใช้ทรัพยากรหลายรายการในลําดับที่ถูกต้องโดยอัตโนมัติ เช่น:
การรับรู้การพึ่งพา: Resource Manager จะไม่ปรับใช้เครื่องเสมือนก่อนที่จะสร้างดิสก์ระบบปฏิบัติการหรืออินเทอร์เฟซเครือข่าย
การสั่งซื้ออัตโนมัติ: การแม็ปการขึ้นต่อกันช่วยให้มั่นใจได้ว่าทรัพยากรถูกสร้างขึ้นในลําดับที่ถูกต้อง
การแสดงภาพ: คุณสามารถดูทรัพยากรทั้งหมดและความสัมพันธ์ได้ในไฟล์ JSON ไฟล์เดียว
โครงสร้างพื้นฐานเป็นกระบวนทัศน์ของโค้ด
เทมเพลตคือ โค้ดที่สามารถแชร์ ทดสอบ และกําหนดเวอร์ชัน ได้เหมือนกับซอฟต์แวร์อื่นๆ
การควบคุมเวอร์ชัน: จัดเก็บเทมเพลตในที่เก็บ Git เพื่อติดตามการเปลี่ยนแปลงโครงสร้างพื้นฐานทั้งหมด
บทวิจารณ์รหัส: ใช้กระบวนการตรวจสอบโดยผู้เชี่ยวชาญมาตรฐานกับการปรับเปลี่ยนโครงสร้างพื้นฐาน
การทดสอบ: ตรวจสอบความถูกต้องของเทมเพลตโดยใช้การทดสอบหน่วยและเครื่องมือตรวจสอบความถูกต้องอัตโนมัติ
เส้นทางการตรวจสอบ: การเปลี่ยนแปลงโครงสร้างพื้นฐานทุกครั้งจะถูกบันทึกไว้ในประวัติเวอร์ชัน
ส่งเสริมการนํากลับมาใช้ใหม่ผ่านพารามิเตอร์
พารามิเตอร์เทมเพลต ช่วยให้สามารถสร้างโครงสร้างพื้นฐานได้หลายเวอร์ชันจากเทมเพลตเดียว:
"parameters": {
"environmentName": {
"type": "string",
"allowedValues": ["dev", "staging", "production"]
},
"vmSize": {
"type": "string",
"defaultValue": "Standard_B2s"
}
}
ประโยชน์:
ความยืดหยุ่นของสิ่งแวดล้อม: ใช้เทมเพลตเดียวกันสําหรับการพัฒนา (VM ขนาดเล็ก) และการผลิต (VM ขนาดใหญ่)
การเพิ่มประสิทธิภาพต้นทุน: ส่งผ่าน SKU หรือขนาดต่างๆ ตามข้อกําหนดของสภาพแวดล้อม
ลดความซ้ําซ้อน: รักษาเทมเพลตหนึ่งแบบแทนไฟล์แยกต่างหากต่อสภาพแวดล้อม
เทมเพลตแบบแยกส่วนและเชื่อมโยงได้
คุณสามารถ เชื่อมโยงเทมเพลตเข้าด้วยกัน เพื่อสร้างส่วนประกอบแบบแยกส่วนที่นํากลับมาใช้ใหม่ได้:
เทมเพลตขนาดเล็กที่เน้น: สร้างเทมเพลตสําหรับทรัพยากรเฉพาะ (เครือข่าย ที่เก็บข้อมูล การประมวลผล)
ส่วนประกอบ: รวมเทมเพลตขนาดเล็กให้เป็นโซลูชันที่สมบูรณ์
การนํากลับมาใช้ใหม่: แชร์ส่วนประกอบทั่วไปในหลายโครงการ
การบํารุงรักษา: อัปเดตหนึ่งโมดูลและประโยชน์การปรับใช้ที่ขึ้นต่อกันทั้งหมด
การประสานที่ง่ายขึ้น
ปรับใช้ทรัพยากรทั้งหมดด้วย คําสั่งเดียว:
az deployment group create \
--resource-group myResourceGroup \
--template-file main.json \
--parameters @parameters.json
สิ่งที่เกิดขึ้น:
- Resource Manager วิเคราะห์ทรัพยากรและการขึ้นต่อกันทั้งหมด
- สร้างทรัพยากรแบบขนานหากเป็นไปได้
- จัดการข้อผิดพลาดในการปรับใช้และให้บันทึกโดยละเอียด
- ส่งคืนเมื่อปรับใช้ทรัพยากรทั้งหมดเรียบร้อยแล้ว
เทมเพลตเริ่มต้นใช้งานด่วนของ Azure
เทมเพลตเริ่มต้นใช้งานด่วน Azure มีไลบรารีที่ขับเคลื่อนโดยชุมชนของเทมเพลตที่พร้อมใช้งานสําหรับสถานการณ์การปรับใช้ทั่วไป ที่เก็บโอเพ่นซอร์สนี้เสนอ:
- เทมเพลตหลายร้อยแบบ: โซลูชันที่สร้างไว้ล่วงหน้าสําหรับเว็บแอป ฐานข้อมูล เครื่องเสมือน ระบบเครือข่าย และอื่นๆ
- แนวทางปฏิบัติแนะนํา: เทมเพลตเป็นไปตามคําแนะนําและแนวทางความปลอดภัยของ Azure
- แหล่งเรียนรู้: ศึกษาว่านักพัฒนาที่มีประสบการณ์จัดโครงสร้างโค้ดโครงสร้างพื้นฐานของตนอย่างไร
- จุดเริ่มต้นการปรับแต่ง: ดาวน์โหลดเทมเพลตและปรับให้เข้ากับความต้องการเฉพาะของคุณ
ตัวอย่างกรณีการใช้งาน:
- ปรับใช้ไซต์ WordPress ด้วย Azure App Service และ MySQL
- สร้างคลัสเตอร์ Kubernetes ด้วย AKS (Azure Kubernetes Service)
- ตั้งค่าไปป์ไลน์การวิเคราะห์ข้อมูลด้วย Azure Data Factory
เข้าถึงไลบรารี:เทมเพลตเริ่มต้นใช้งานด่วน Azure บน GitHub
Bicep: ทางเลือกเทมเพลต ARM ที่ทันสมัย
แม้ว่าโมดูลนี้จะมุ่งเน้นไปที่ เทมเพลต JSON ARM แต่สิ่งสําคัญคือต้องรู้เกี่ยวกับ Bicep ซึ่งเป็นภาษาเฉพาะโดเมนสําหรับการกําหนดโครงสร้างพื้นฐาน Azure:
- ไวยากรณ์ที่สะอาดกว่า: Bicep มีไวยากรณ์ที่ง่ายกว่าและอ่านง่ายกว่าเมื่อเทียบกับ JSON
- ความสามารถเดียวกัน: Bicep คอมไพล์เป็นเทมเพลต ARM ดังนั้นคุณจึงได้รับคุณสมบัติ ARM ทั้งหมด
- เครื่องมือที่ดีกว่า: การสนับสนุน IDE ที่ได้รับการปรับปรุงด้วย IntelliSense และการตรวจสอบความถูกต้อง
- การสนับสนุน Azure ดั้งเดิม: ได้รับการสนับสนุนอย่างเต็มที่โดย Microsoft เป็นภาษา IaC ที่แนะนํา
ตัวอย่างการเปรียบเทียบ:
// Bicep syntax (cleaner)
resource storageAccount 'Microsoft.Storage/storageAccounts@2021-02-01' = {
name: 'mystorageaccount'
location: 'eastus'
sku: {
name: 'Standard_LRS'
}
kind: 'StorageV2'
}
// Equivalent JSON ARM template
{
"type": "Microsoft.Storage/storageAccounts",
"apiVersion": "2021-02-01",
"name": "mystorageaccount",
"location": "eastus",
"sku": {
"name": "Standard_LRS"
},
"kind": "StorageV2"
}
เมื่อใดควรใช้ Bicep: สําหรับโปรเจ็กต์ใหม่ ให้พิจารณา Bicep เป็นภาษา IaC หลักของคุณ สําหรับเทมเพลต ARM ที่มีอยู่ คุณสามารถแปลงเป็น Bicep ได้โดยใช้ az bicep decompile คําสั่ง