สํารวจโครงสร้างเทมเพลต Azure Resource Manager

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

ในหน่วยนี้ คุณจะได้เรียนรู้เกี่ยวกับการใช้เทมเพลต Azure Resource Manager (เทมเพลต ARM) เพื่อใช้โครงสร้างพื้นฐานเป็นโค้ด คุณสํารวจส่วนของเทมเพลต ARM เรียนรู้วิธีปรับใช้เทมเพลต ARM ของคุณไปยัง Azure และระบุรายละเอียดเกี่ยวกับทรัพยากร ส่วนของเทมเพลต ARM

โครงสร้างพื้นฐานเป็นโค้ดคืออะไร

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

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

  • การกําหนดค่าที่สอดคล้องกัน
  • ความสามารถในการปรับขนาดที่ดีขึ้น
  • การปรับใช้ที่เร็วขึ้น
  • การตรวจสอบย้อนกลับได้ดียิ่งขึ้น

วิดีโอนี้อธิบายโครงสร้างพื้นฐานเป็นโค้ด:

เทมเพลต ARM คืออะไร

เทมเพลต ARM เป็นไฟล์ JavaScript Object Notation (JSON) ที่กําหนดโครงสร้างพื้นฐานและการกําหนดค่าสําหรับการปรับใช้ของคุณ เทมเพลตนี้ใช้ไวยากรณ์ที่ประกาศ ไวยากรณ์ที่เปิดเผยคือวิธีการสร้างโครงสร้างและองค์ประกอบที่สรุปว่าทรัพยากรมีลักษณะอย่างไรโดยไม่ต้องอธิบายโฟลว์ตัวควบคุม ไวยากรณ์เชิงประกาศแตกต่างจาก ไวยากรณ์เชิงคําสั่งซึ่งใช้คําสั่งสําหรับคอมพิวเตอร์เพื่อดําเนินการ การเขียนสคริปต์เชิงคําสั่งมุ่งเน้นไปที่การระบุแต่ละขั้นตอนในการปรับใช้ทรัพยากร

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

ประโยชน์ของการใช้เทมเพลต ARM

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

เทมเพลต ARM เป็น นิจพลซึ่งหมายความว่าคุณสามารถปรับใช้เทมเพลตเดียวกันได้หลายครั้งและได้รับทรัพยากรชนิดเดียวกันในสถานะเดียวกัน

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

แผนภาพที่แสดงการแมปของขั้นตอนการประมวลผลเทมเพลต มีเพียงหนึ่งการเรียกเพื่อประมวลผลเทมเพลตซึ่งตรงกันข้ามกับการเรียกเพื่อประมวลผลสคริปต์หลายครั้ง

นอกจากนี้ Resource Manager ยังมีการตรวจสอบความถูกต้องที่มีอยู่ภายใน จะตรวจสอบเทมเพลตก่อนเริ่มการปรับใช้เพื่อให้แน่ใจว่าการปรับใช้สําเร็จ

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

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

คุณยังสามารถรวมเทมเพลต ARM ของคุณลงในเครื่องมือการรวมอย่างต่อเนื่องและการปรับใช้อย่างต่อเนื่อง (CI/CD) เช่น Azure Pipelinesซึ่งสามารถทําให้ไปป์ไลน์การเผยแพร่ของคุณเป็นไปป์ไลน์โดยอัตโนมัติเพื่อการอัปเดตแอปพลิเคชันและโครงสร้างพื้นฐานที่รวดเร็วและเชื่อถือได้ ด้วยการใช้งานเทมเพลต Azure DevOps และ ARM คุณสามารถสร้างและปรับใช้โครงการของคุณได้อย่างต่อเนื่อง

โครงสร้างไฟล์เทมเพลต ARM

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

ธาตุ คำอธิบาย
เค้าร่าง ส่วนที่จําเป็นที่กําหนดตําแหน่งที่ตั้งของไฟล์ Schema JSON ที่อธิบายโครงสร้างของข้อมูล JSON หมายเลขเวอร์ชันที่คุณใช้ขึ้นอยู่กับขอบเขตของการปรับใช้และตัวแก้ไข JSON ของคุณ
contentVersion ส่วนที่จําเป็นที่กําหนดเวอร์ชันของเทมเพลตของคุณ (เช่น 1.0.0.0) คุณสามารถใช้ค่านี้เพื่อบันทึกการเปลี่ยนแปลงที่สําคัญในเทมเพลตของคุณเพื่อให้แน่ใจว่าคุณกําลังปรับใช้เทมเพลตที่ถูกต้อง
apiProfile ส่วนเพิ่มเติมที่กําหนดคอลเลกชันของเวอร์ชัน API สําหรับชนิดทรัพยากร คุณสามารถใช้ค่านี้เพื่อหลีกเลี่ยงการต้องระบุเวอร์ชัน API สําหรับแต่ละทรัพยากรในเทมเพลต
พารามิเตอร์ ส่วนที่เลือกได้ที่คุณกําหนดค่าที่มีให้ในระหว่างการปรับใช้ คุณสามารถให้ค่าเหล่านี้ในไฟล์พารามิเตอร์ โดยพารามิเตอร์บรรทัดคําสั่ง หรือในพอร์ทัล Azure ได้
ตัวแปร ส่วนที่เลือกได้ซึ่งคุณกําหนดค่าที่ใช้เพื่อลดความซับซ้อนของนิพจน์ภาษาเทมเพลต
ฟังก์ชัน ส่วนที่เลือกได้ซึ่งคุณสามารถกําหนด ฟังก์ชันที่ผู้ใช้กําหนดเอง ที่พร้อมใช้งานภายในเทมเพลต ฟังก์ชันที่ผู้ใช้กําหนดเองสามารถทําให้เทมเพลตของคุณง่ายขึ้นเมื่อมีการใช้นิพจน์ที่ซับซ้อนซ้ํา ๆ ในเทมเพลตของคุณ
ทรัพยากร ส่วนที่จําเป็นซึ่งกําหนดรายการจริงที่คุณต้องการปรับใช้หรืออัปเดตในกลุ่มทรัพยากรหรือการสมัครใช้งาน
เอาต์พุต ส่วนที่เลือกได้ที่คุณระบุค่าที่จะแสดงในตอนท้ายของการปรับใช้

ปรับใช้เทมเพลต ARM กับ Azure

คุณสามารถปรับใช้เทมเพลต ARM กับ Azure ด้วยหนึ่งในวิธีต่อไปนี้:

  • ปรับใช้เทมเพลตภายในเครื่อง
  • ปรับใช้เทมเพลตที่เชื่อมโยง
  • ปรับใช้ในไปป์ไลน์การปรับใช้งานแบบต่อเนื่อง

โมดูลนี้มุ่งเน้นไปที่การปรับใช้เทมเพลต ARM ภายในเครื่อง ในโมดูล Learn ในอนาคต คุณจะได้เรียนรู้วิธีการปรับใช้โครงสร้างพื้นฐานที่ซับซ้อนมากขึ้นและวิธีการรวมกับ Azure Pipelines

ในการปรับใช้เทมเพลตภายในเครื่อง คุณจําเป็นต้อง Azure PowerShell หรือ Azure CLI ที่ติดตั้งภายในเครื่อง

ก่อนอื่น ลงชื่อเข้าใช้ Azure โดยใช้ Azure CLI หรือ Azure PowerShell

az login

ถัดไป ให้กําหนดกลุ่มทรัพยากรของคุณ คุณสามารถใช้กลุ่มทรัพยากรที่กําหนดไว้แล้ว หรือสร้างกลุ่มใหม่ด้วยคําสั่งต่อไปนี้ คุณสามารถขอรับค่าตําแหน่งที่ตั้งที่พร้อมใช้งานจาก: az account list-locations (CLI) หรือ Get-AzLocation (PowerShell) คุณสามารถกําหนดค่าที่ตั้งเริ่มต้นโดยใช้ az configure --defaults location=<location>

az group create \
  --name {name of your resource group} \
  --location "{location}"

หากต้องการเริ่มต้นการปรับใช้เทมเพลตที่กลุ่มทรัพยากร ให้ใช้คําสั่ง Azure CLI กลุ่มการปรับใช้ az สร้าง หรือคําสั่ง Azure PowerShell New-AzResourceGroupDeployment

ปลาย

ความแตกต่างระหว่าง az deployment group create และ az group deployment create คือ az group deployment create คือคําสั่งเก่าที่จะถูกเลิกใช้และจะถูกแทนที่ด้วย az deployment group create ดังนั้น เราขอแนะนําให้ใช้ az deployment group create เพื่อปรับใช้ทรัพยากรภายใต้ขอบเขตกลุ่มทรัพยากร

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

เมื่อต้องการเรียกใช้คําสั่งการปรับใช้นี้ คุณต้องมี Azure CLI เวอร์ชันล่าสุด

templateFile="{provide-the-path-to-the-template-file}"
az deployment group create \
  --name blanktemplate \
  --resource-group myResourceGroup \
  --template-file $templateFile

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

ไปป์ไลน์ CI/CD ทําให้การสร้างและการปรับใช้โครงการพัฒนาเป็นไปโดยอัตโนมัติซึ่งรวมถึงโครงการเทมเพลต ARM ไปป์ไลน์ที่พบบ่อยที่สุดสองรายการที่ใช้สําหรับการปรับใช้เทมเพลตคือ Azure Pipelines หรือ GitHub Actions

ข้อมูลเพิ่มเติมเกี่ยวกับการปรับใช้สองประเภทเหล่านี้ครอบคลุมอยู่ในโมดูลอื่น ๆ

เพิ่มแหล่งข้อมูลลงในเทมเพลต

เมื่อต้องเพิ่มทรัพยากรลงในเทมเพลตของคุณ คุณจําเป็นต้องทราบผู้ให้บริการทรัพยากรและชนิดของทรัพยากร ไวยากรณ์สําหรับชุดนี้อยู่ในรูปแบบ {resource-provider}/{resource-type} ตัวอย่างเช่น เมื่อต้องเพิ่มทรัพยากรบัญชีเก็บข้อมูลไปยังเทมเพลตของคุณ คุณจําเป็นต้องมีผู้ให้บริการทรัพยากร Microsoft.Storage หนึ่งในชนิดสําหรับผู้ให้บริการนี้คือ storageAccount ดังนั้น ชนิดทรัพยากรของคุณจึงแสดงเป็น Microsoft.Storage/storageAccounts คุณสามารถใช้รายการของผู้ให้บริการทรัพยากร สําหรับบริการ Azure เพื่อค้นหาผู้ให้บริการที่คุณต้องการ

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

สกรีนช็อตของหน้าเอกสารประกอบของ Microsoft ที่แสดงเอกสารประกอบของบัญชีที่เก็บข้อมูลที่เลือก

นี่คือตัวอย่างของคุณสมบัติบางอย่างที่แสดงอยู่จากหน้าบัญชีที่เก็บข้อมูล:

สกรีนช็อตของหน้าเอกสารของ Microsoft ที่แสดงคุณสมบัติบางอย่างของบัญชีเก็บข้อมูล

สําหรับตัวอย่างที่เก็บข้อมูลของเรา เทมเพลตของคุณอาจมีลักษณะดังนี้:

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentTemplate.json#",
  "contentVersion": "1.0.0.1",
  "apiProfile": "",
  "parameters": {},
  "variables": {},
  "functions": [],
  "resources": [
    {
      "type": "Microsoft.Storage/storageAccounts",
      "apiVersion": "2025-01-01",
      "name": "learntemplatestorage123",
      "location": "westus",
      "sku": {
        "name": "Standard_LRS"
      },
      "kind": "StorageV2",
      "properties": {
        "supportsHttpsTrafficOnly": true
      }
    }
  ],
  "outputs": {}
}