OS templates และ ISOs
ตำแหน่งในแผงผู้ดูแลระบบ: Services › Virtual Machines › Template (
/vm/templates) เทมเพลต Proxmox จะแสดงรายการตามแต่ละคลัสเตอร์ใน Infrastructure › Cloud provider › Providers › (cluster) › Clusters
What it does
Template คืออิมเมจระบบปฏิบัติการที่ VM ใหม่เริ่มต้นทำงาน NexCMP ไม่ได้จัดเก็บอิมเมจด้วยตนเอง แต่จะอ่านข้อมูลที่ CloudStack รายงาน (template ที่พร้อมใช้งานและเป็นรายการเด่น) หรือรายการที่คุณระบุสำหรับคลัสเตอร์ Proxmox และช่วยให้คุณเลือกได้ว่าจะขายรายการใด พร้อมด้วยชื่อที่แสดงต่อลูกค้า ไอคอน และผู้ใช้สำหรับเข้าสู่ระบบ หน้าตานี้แสดงวิธีเตรียมอิมเมจที่ทำงานร่วมกับ NexCMP ได้เป็นอย่างดี ได้แก่ การเข้าสู่ระบบด้วยรหัสผ่าน การปรับขนาด CPU และ RAM แบบสด ไฟล์สลับ (swap) และดิสก์รากที่ขยายขนาดได้ตามแผน
ข้อกำหนด
| Item | Requirement |
|---|---|
| ตัวสร้าง CloudStack template | เครื่อง Linux ที่มี libguestfs-tools (virt-customize, virt-sparsify, guestfish), qemu-utils, curl และพื้นที่ดิสก์ว่างประมาณ 5 GB ไม่จำเป็นต้องใช้ KVM และ root เข้าถึงอินเทอร์เน็ตสำหรับการติดตั้งแพ็กเกจ (หรือสร้างด้วย --offline) |
| ตำแหน่งของตัวสร้าง | มีมาให้พร้อมกับทุกรุ่นใน /opt/nexcmp/releases/<version>/share/templates/ บนเซิร์ฟเวอร์แผงควบคุม คุณไม่จำเป็นต้องเรียกใช้งานที่นั่น: ให้คัดลอกโฟลเดอร์ไปยังเครื่อง Linux ใดก็ได้ |
| เว็บเซิร์ฟเวอร์ | เซิร์ฟเวอร์ HTTP(S) ใดๆ ที่ secondary storage VM ของ CloudStack สามารถเข้าถึงได้ เพื่อเผยแพร่ไฟล์ .qcow2 ที่สร้างเสร็จแล้ว โดยไม่จำเป็นต้องเข้าถึงได้จากอินเทอร์เน็ต |
| CloudStack | บัญชีที่สามารถลงทะเบียนเทมเพลตได้ พร้อมทั้ง ID ของโซนและประเภทระบบปฏิบัติการที่ตรงกัน ดูที่ CloudStack |
| Proxmox VE | VM เทมเพลตแบบ cloud-init ที่ติดตั้ง QEMU guest agent หนึ่งรายการต่อระบบปฏิบัติการและต่อโหนด ดูที่ Proxmox VE |
| ขึ้นอยู่กับ | เชื่อมต่อ CloudStack หรือ Proxmox VE ก่อน |
เตรียมโครงสร้างพื้นฐาน
CloudStack: สร้างเทมเพลต
อิมเมจฐานที่รองรับ (ระบบจะดาวน์โหลดอิมเมจของผู้ให้บริการและตรวจสอบ checksum ก่อนที่จะทำการเปลี่ยนแปลงใดๆ):
| อิมเมจ | --distro | ผู้ใช้สำหรับเข้าสู่ระบบ |
|---|---|---|
| Ubuntu 22.04 | ubuntu-22.04 | ubuntu |
| Ubuntu 24.04 | ubuntu-24.04 | ubuntu |
| Debian 12 | debian-12 | debian |
| Rocky Linux 9 | rocky-9 | rocky |
ดิสโทรอื่นๆ เพิ่มเติม: เพิ่มบรรทัดลงใน distros.conf (URL ของอิมเมจ, ไฟล์ checksum, ตระกูล deb หรือ rpm)
คัดลอก builder ไปยังเครื่องที่ใช้บิลด์และเรียกใช้งาน:
bashcp -r /opt/nexcmp/releases/<version>/share/templates ~/templates && cd ~/templates ./build-template.sh --distro ubuntu-24.04 --version v7 --work ./outเพิ่ม
--panel-url https://cloud.example.comเพื่อฝังเอเจนต์มอนิเตอร์ตอนบูตครั้งแรก (ไม่บังคับ) ซึ่งจะลงทะเบียนเข้ากับพาเนลของคุณ (HTTPS เท่านั้น) หากไม่ระบุ จะไม่มีการเพิ่มเอเจนต์ ตัวเลือกอื่นๆ:--base <file>เพื่อใช้อิมเมจที่คุณดาวน์โหลดมาแล้ว,--offlineเพื่อข้ามการติดตั้งแพ็กเกจผลลัพธ์ที่ได้คือ
out/ubuntu-24.04-v7.qcow2และ.sha256ของไฟล์ดังกล่าว การบิลด์จะสิ้นสุดด้วยการรันverify-image.shซึ่งจะตรวจสอบอิมเมจที่เสร็จแล้วแบบอ่านอย่างเดียว และปฏิเสธอิมเมจที่มีปัญหา (โดยจะเก็บไว้เป็น.unverified) คุณสามารถรันซ้ำเมื่อใดก็ได้:./verify-image.sh out/ubuntu-24.04-v7.qcow2 --no-agent
สิ่งที่ builder ใส่ลงในอิมเมจ:
| Item | เหตุผล |
|---|---|
qemu-guest-agent | CloudStack สามารถสอบถามข้อมูล CPU และ IP จาก VM ได้ รวมถึงพักการทำงานชั่วคราวเพื่อทำ snapshot |
cloud-init พร้อมด้วย data source ของ CloudStack, set_passwords ในทุกครั้งที่บูต, การเข้าสู่ระบบด้วยรหัสผ่าน SSH | รหัสผ่านที่สร้างขึ้นจะถูกดึงมาจาก virtual router และ Reset password สามารถใช้งานได้ |
| กฎ udev สำหรับ CPU และ RAM ที่เพิ่มเข้ามาแบบ hot-added | vCPU และ RAM ที่เพิ่มเข้ามาแบบ hot-added จะเริ่มทำงานได้เอง ทำให้การปรับขนาดแบบ live scaling และ Auto Scaling ใช้งานได้ |
| บริการไฟล์ swap | สร้าง /swapfile ของค่าที่น้อยกว่าระหว่าง 50% ของ RAM และ 4 GiB หลังจากที่ดิสก์ขยายขนาดแล้ว touch /etc/cmp-swap.disabled จะปิดการใช้งาน |
cloud-init growpart และ resizefs | ดิสก์รากขนาดเล็กจะขยายใหญ่ขึ้นตามขนาดดิสก์ของแพ็กเกจเมื่อบูตครั้งแรก |
| machine-id ว่างเปล่า, ไม่มี SSH host key | VM ทุกตัวจะมีเอกลักษณ์เป็นของตัวเอง |
ตั้งชื่อเทมเพลตว่า <OS> <version> <vN>
NexCMP จะเปิด Auto Scaling ให้กับเทมเพลตที่มีชื่อลงท้ายด้วย vN หรือ vN.M โดยมี N ตั้งแต่ 6 ขึ้นไป (Ubuntu 24.04 v7, Rocky Linux 9 v7.1) ตัวสร้างจะบังคับใช้กฎนี้สำหรับ --version โปรดลงทะเบียนเทมเพลตด้วยชื่อที่พิมพ์ไว้อย่างแม่นยำ
เผยแพร่ไฟล์และลงทะเบียนใน CloudStack โดยใช้ค่า SHA-256 ที่ตัวสร้างแสดงขึ้นมา และให้ลงทะเบียนหลังจากที่เขียนไฟล์เสร็จสมบูรณ์แล้วเท่านั้น:
bashcmk list ostypes keyword="Ubuntu 24.04" filter=id,description cmk register template name="Ubuntu 24.04 v7" displaytext="Ubuntu 24.04 v7" \ url=https://files.example.com/ubuntu-24.04-v7.qcow2 zoneid=<zone-id> format=QCOW2 hypervisor=KVM \ ostypeid=<os-type-id> passwordenabled=true sshkeyenabled=true isdynamicallyscalable=true \ requireshvm=true isextractable=false ispublic=true isfeatured=true \ checksum="{SHA-256}<sha256 of the file>" \ details[0].guest.cpu.mode=host-passthrough details[0].rootDiskController=osdefaultpasswordenabled=trueช่วยให้ CloudStack สามารถสร้างรหัสผ่านสำหรับ VM ได้isdynamicallyscalable=trueช่วยให้สามารถปรับขนาดแบบ live scaling ได้host-passthroughจำเป็นสำหรับการบูตอิมเมจ Rocky และ Alma รุ่นปัจจุบัน ส่วนosdefaultช่วยให้คอนโทรลเลอร์ดิสก์สามารถย้ายข้ามระบบได้
รอจนกว่าเทมเพลตจะแสดงสถานะเป็น Download Complete / Ready
อิมเมจของผู้ให้บริการจะยังคงขนาดเสมือนจริงที่เล็ก (ประมาณ 3.5 GiB สำหรับ Ubuntu และ Debian, 10 GiB สำหรับ Rocky) โปรดจำไว้ว่าดิสก์ของแพ็กเกจต้องไม่เล็กกว่าดิสก์ของเทมเพลต
Proxmox VE: สร้างเทมเพลต
สร้างเทมเพลต VM แบบ cloud-init ตามระบบปฏิบัติการบนทุกโหนดที่คุณปรับ the deploy ไปใช้งาน โดยติดตั้ง guest agent และเปิดใช้งาน root login จากนั้นลงทะเบียนเป็น os-key=vmid คำสั่งเต็มรูปแบบอยู่ใน Proxmox VE ตัวสร้างของ CloudStack ด้านบน ไม่ใช่ สำหรับ Proxmox เนื่องจากเป็นการกำหนดค่า cloud-init สำหรับ data source ของ CloudStack
ISO
ลูกค้าสามารถเมานต์ ISO ของตนเองได้ผ่านโมดูล Images (CloudStack) หรือโมดูลเซิร์ฟเวอร์เฉพาะ (Dedicated Server) ซึ่งแยกต่างหากจากเทมเพลต OS ในหน้านี้ โปรดดูเพิ่มเติมที่ Modules และ Dedicated servers
เชื่อมต่อใน NexCMP
เปิด Services › Virtual Machines › Template คลิก Sync now หรือรอไม่เกิน 15 นาที การซิงค์จะเพิ่มเทมเพลตที่พร้อมใช้งานและตั้งค่าเป็น featured ไว้ใน CloudStack

คลิก Edit บนเทมเพลตใหม่และตั้งค่าสิ่งที่ลูกค้าจะมองเห็น:
ฟิลด์ ค่าตัวอย่าง ชื่อที่แสดงสำหรับลูกค้า Ubuntu 24.04 LTSตระกูล OS ubuntu(ไอคอนและผู้ใช้เริ่มต้น)เวอร์ชัน 24.04ชื่อผู้ใช้สำหรับเข้าสู่ระบบ ubuntu(Windows:Administrator; อื่นๆ:root)ไอคอน URL ของอิมเมจ, พาธ หรือชื่อ ลำดับ 10ใช้งาน เปิด การเพิ่ม vCPU/RAM แบบ hot-plug (ปรับขนาดแบบ live) Auto by name (v6 or later), Yes หรือ No (needs a restart) 
เปิดใช้งานเทมเพลต เทมเพลตที่ CloudStack ไม่ได้แสดงรายการไว้อีกต่อไปจะถูกซ่อนโดยอัตโนมัติ (และคุณจะได้รับการแจ้งเตือนทาง Telegram หากตั้งค่าไว้) โดยจะไม่มีการลบออกจาก NexCMP อย่างถาวร
แทนที่เทมเพลตด้วยบิลด์ใหม่กว่า
ใช้ More › Replace with new version บนเทมเพลตที่ขายอยู่ เลือกเทมเพลตใหม่ที่พร้อมใช้งานและถูกปิดใช้งานอยู่ รายการที่ขายจะชี้ไปที่บิลด์ใหม่โดยยังคงชื่อ ลําดับ และไอคอนเดิมไว้ ส่วนของเดิมจะถูกปิดใช้งานเพื่อใช้เป็นทางถอย (หากต้องการย้อนกลับ ให้ใช้ Replace บนรายการใหม่) VM ที่กําลังทํางานอยู่จะไม่ได้รับผลกระทบ หากบิลด์ใหม่เป็นตระกูล OS ที่ต่างออกไป ให้ทำเครื่องหมายยืนยันก่อน
ตรวจสอบ
- แถวจะแสดงสถานะ ready และสําหรับบิลด์ที่มีชื่อว่า
vNโดยมี N ตั้งแต่ 6 ขึ้นไป จะแสดง CPU hot-plug: supported - ปรับใช้ VM ทดสอบหนึ่งเครื่องจากเทมเพลตและตรวจสอบภายใน VM:
- คุณสามารถเข้าสู่ระบบด้วยรหัสผ่านที่แสดงในพอร์ทัล;
df -h /แสดงขนาดดิสก์ของแพ็กเกจ;- หลังจากการปรับขนาดแบบสด (Change plan โดยไม่ต้องรีบูต)
nprocและfree -mจะขยายใหญ่ขึ้น; swapon --showแสดงรายชื่อ/swapfile(ดิสก์ที่มีพื้นที่เหลือน้อยกว่า swap บวก 2 GiB จะข้ามไป);systemctl is-active qemu-guest-agentพิมพ์active
- หากคุณฝังเอเจนต์ไว้ล่วงหน้า VM จะปรากฏในโฮสต์ที่ตรวจสอบของแผงควบคุมภายในหนึ่งนาทีหลังจากการบูตครั้งแรก VM ต้องการ IP สาธารณะของตัวเอง โดยแผงควบคุมจะจดจำจาก IP ต้นทางสาธารณะ
ข้อจำกัดและหมายเหตุ
- ตัวสร้างนี้รองรับเฉพาะ Linux เท่านั้นและสร้างอิมเมจ Linux อิมเมจอื่น ๆ (เช่น Windows) สามารถลงทะเบียนใน CloudStack ได้ด้วยวิธีอื่น โดย NexCMP จะแสดงรายการตามที่ CloudStack รายงาน
- มีเฉพาะเอเจนต์ amd64 เท่านั้นที่จัดส่งมา สถาปัตยกรรมอื่น ๆ จะข้ามการติดตั้งเอเจนต์
- อิมเมจจะถูกตรวจสอบด้วย
guestfishแต่จะไม่ถูกบูตโดยตัวสร้าง โปรดปรับใช้ VM ทดสอบหนึ่งเครื่องเสมอก่อนที่จะขายอิมเมจใหม่ - ข้ามเอเจนต์บน VM หนึ่งเครื่องด้วย
touch /etc/cmp-agent.disabledก่อนการบูตครั้งแรก ลบออกทีหลังด้วยsystemctl disable --now cmp-agent cmp-agent-install; rm -rf /etc/cmp-agent /usr/local/bin/cmp-agentจากนั้นจึงลบเอเจนต์ในคอนโซลผู้ดูแลระบบ
การแก้ Problme
| อาการ | สาเหตุ | วิธีแก้ปัญหา |
|---|---|---|
virt-customize ไม่สามารถดาวน์โหลดแพ็กเกจได้ | เครื่องมือสร้างไม่มีเครือข่ายขาออก | แก้ไข DNS หรือพร็อกซี่บนเครื่องนั้น หรือสร้างด้วย --offline บนอิมเมจฐานที่มีแพ็กเกจอยู่แล้ว |
libguestfs: error: /usr/bin/supermin exited with error status 1 | เคอร์เนลของโฮสต์ไม่สามารถอ่านได้โดยผู้ใช้ปัจจุบัน (Ubuntu) | sudo chmod +r /boot/vmlinuz* หรือเรียกใช้การสร้างในฐานะ root |
| เช็คซัมไม่ตรงกัน หรืออิมเมจของผู้จัดจำหน่ายไม่มีอยู่อีกต่อไป | ผู้จัดจำหน่ายย้ายไฟล์ "latest" ของตน | ดาวน์โหลดอิมเมจด้วยตนเอง ตรวจสอบเทียบกับไฟล์เช็คซัมของผู้จัดจำหน่าย และส่งผ่านด้วย --base |
| Rocky: XFS เวอร์ชันใหม่กว่าไม่สามารถติดตั้งใช้งานได้ | เคอร์เนลของโฮสต์เก่าเกินไป | สร้างบนเครื่องที่มีเคอร์เนลเวอร์ชันล่าสุด |
--version must be v6 or higher | ชื่อต้องเป็น vN โดยมี N ตั้งแต่ 6 ขึ้นไป | ใช้ --version v7 |
--panel-url must be a plain https:// URL | เอเจนต์ถูกดาวน์โหลดและเรียกใช้ในฐานะ root จึงปฏิเสธ HTTP แบบธรรมดา | ใช้ URL https:// ที่ไม่มีช่องว่าง เครื่องหมายคำพูด หรือคิวรีสตริง |
| เทมเพลตยังคงสถานะ not ready | CloudStack ดาวน์โหลด1ยังไม่เสร็จสิ้น | รอ Download Complete, ตรวจสอบว่า VM ที่จัดเก็บข้อมูลสำรองเข้าถึง URL ได้ |
| แถวแสดงสถานะ no-pass | เทมเพลตถูกลงทะเบียนโดยไม่มี passwordenabled=true | ลงทะเบียนใหม่อีกครั้งด้วยแฟล็กดังกล่าว |
| CPU hot-plug แสดงสถานะ unsupported | ชื่อไม่ได้ลงท้ายด้วย vN (N ตั้งแต่ 6 ขึ้นไป) | เปลี่ยนชื่อเทมเพลต หรือตั้งค่า vCPU/RAM hot-plug เป็น Yes ใน Edit หากอิมเมจมีกฎ udev |
| รายการเทมเพลตว่างเปล่าหลังจากการเชื่อมต่อครั้งแรก | การซิงค์ยังไม่ทำงาน | คลิก Sync now (ต้องใช้งานเวิร์กเทเบิล) หรือรอรอบ 15 นาที |