เหตุใดจึงใช้เทมเพลต 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 คําสั่ง