Thay vì cài đặt Ubuntu từ đầu mỗi lần tạo VM mới, việc sử dụng Proxmox Cloud Images sẽ giúp bạn deploy máy ảo nhanh hơn gấp 10 lần. Nhờ tối ưu hóa dung lượng và tích hợp sẵn Cloud-init, các mẫu Proxmox Cloud Images giúp đơn giản hóa quá trình khởi tạo và quản lý máy chủ ảo trên môi trường Proxmox VE.
Nếu bạn mới dùng Proxmox, hãy xem thêm Monitorix Proxmox để giám sát hệ thống và Proxmox Backup Server để backup VMs.
Tại Sao Nên Sử Dụng Proxmox Cloud Images?
Để hiểu rõ hơn cloud image là gì, đây là các bản phân phối hệ điều hành tối giản đã được đóng gói sẵn dưới dạng disk image của nhà phát triển, giúp tối ưu hóa dung lượng lưu trữ và loại bỏ hoàn toàn các bước cài đặt hệ điều hành thủ công từ đĩa ISO. Khi kết hợp với Proxmox VE, chúng mang lại nhiều lợi thế vượt trội:
- Boot nhanh: Cloud images được tối ưu sẵn, không có các package không cần thiết.
- Cloud-init: Cơ chế cấu hình tự động trong các bản image này giúp tự động thiết lập user, network, SSH keys khi khởi động.
- Clone dễ dàng: Việc khởi tạo template từ Proxmox Cloud Images một lần sẽ giúp bạn clone bao nhiêu VM tùy thích.
- Disk linh hoạt: Các bản cloud image này cho phép bạn dễ dàng resize disk theo nhu cầu sử dụng thực tế.
1. Tạo VM Rỗng Cho Proxmox Cloud Images
Đầu tiên, để tạo template proxmox từ cloud image, ta khởi đầu bằng cách tạo một VM rỗng. Bạn có thể khởi động cấu hình Proxmox Cloud Images bằng cách chạy lệnh này trên Proxmox shell:
# Tạo VM template
qm create 990001 \
--name ubuntu-2404-cloud-init \
--description "Ubuntu 24.04 Cloud Init template" \
--ostype l26 \
--cpu cputype=host \
--cores 1 \
--sockets 1 \
--memory 2048 \
--scsihw virtio-scsi-pci \
--net0 virtio,bridge=vmbr0
Giải thích các thông số:
990001— VM ID (chọn số cao để tránh trùng với các VM khác).ostype l26— Linux kernel 2.6+ (Ubuntu, Debian, CentOS đều dùng).scsihw virtio-scsi-pci— Dùng VirtIO SCSI để performance tốt nhất.net0 virtio,bridge=vmbr0— Network card VirtIO, kết nối vào bridge vmbr0.
2. Tải Proxmox Cloud Images Từ Trang Chủ
Chúng ta có thể tải các bản cloud image chính thức từ trang chủ của các nhà phân phối lớn như Ubuntu Cloud Images hoặc Debian Cloud Images về máy chủ Proxmox:
# Download Ubuntu 24.04 cloud image
wget -O /tmp/noble-server-cloudimg-amd64.img \
https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
# Hoặc dùng các distribution khác:
# Debian
wget -O /tmp/debian-12-cloudimg.qcow2 \
https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2
# CentOS Stream
wget -O /tmp/centos-stream.qcow2 \
https://cloud.centos.org/centos/9-stream/x86_64/images/CentOS-Stream-GenericCloud-9-latest.x86_64.qcow2
# Fedora
wget -O /tmp/fedora-cloud.qcow2 \
https://download.fedoraproject.org/pub/fedora/linux/releases/41/Cloud/x86_64/images/Fedora-Cloud-Base-Generic-41-1.4.x86_64.qcow2
3. Import File Proxmox Cloud Images Vào VM
Import file cloud image đã tải vào storage của Proxmox và attach vào VM:
# Import disk cloud image vào storage local-lvm
qm importdisk 990001 /tmp/noble-server-cloudimg-amd64.img local-lvm
# Nếu dùng local-zfs storage:
# qm importdisk 990001 /tmp/noble-server-cloudimg-amd64.img local-zfs
Attach disk vừa import vào VM:
# Attach disk vào VM
qm set 990001 --scsi0 local-lvm:vm-990001-disk-0
# Set boot order: boot từ scsi0
qm set 990001 --boot c --bootdisk scsi0
4. Cấu hình Console
Cloud images dùng serial console thay vì VGA monitor. Cấu hình để xem output đúng:
# Thêm serial port và set VGA thành serial console
qm set 990001 --serial0 socket --vga serial0
5. Thêm Cloud-Init Drive Để Cấu Hình Proxmox Cloud-Init
Cloud-init drive chứa cấu hình cho VM: user, password, SSH keys, network…
# Thêm cloud-init drive
qm set 990001 --ide2 local-lvm:cloudinit
6. Convert Thành Template Proxmox Cloud Images
Sau khi hoàn tất, convert VM thành template Proxmox Cloud Images. Template này không thể khởi động, chỉ dùng để nhân bản (clone):
# Convert thành template
qm template 990001
Giờ bạn sẽ thấy VM 990001 trong Proxmox với icon template của Proxmox Cloud Images:
7. Clone từ Template
Để tạo VM từ template Proxmox Cloud Images, trong Proxmox web interface:
- Click chọn template
ubuntu-2404-cloud-init. - Click phải → Clone.
- Điền thông tin: – Name: ubuntu-web-01 – Mode: Full Clone (tạo VM độc lập hoàn toàn)
8. Cấu hình Cloud-Init
Sau khi clone xong, chọn VM mới → Cloud-Init tab để cấu hình:
User Configuration
Cấu hình thông tin tài khoản đăng nhập cho template máy ảo.
- User: Tên user đăng nhập (VD: admin)
- Password: Password cho user
- SSH Public Keys: Paste public key để login không cần password
Network Configuration
Thiết lập các thông số mạng cho bản template của bạn.
- IPv4: DHCP hoặc Static (điền IP, gateway, subnet)
- DNS: Nameserver (VD: 8.8.8.8, 1.1.1.1)
DNS Configuration
Khai báo nameserver và domain cho template.
- DNS Domain: Search domain (VD: example.com)
- DNS Server 1, 2: Nameservers
Sau khi cấu hình xong, click Regenerate Image để áp dụng.
9. Khởi động VM
Start VM và xem boot process qua console:
# Start VM
qm start 101
# Xem console (từ Proxmox shell)
qm terminal 101
# Thoát console: Ctrl+O, sau đó Ctrl+C
Trong web interface, dùng xterm.js console thay vì noVNC để:
- Text rõ ràng hơn.
- Có scrollback buffer.
- Dễ bắt lỗi khi boot.
10. Script Khởi Tạo Proxmox Cloud Images Tự Động
Tạo script để tự động setup template cho các distribution khác nhau:
#!/bin/bash
# create-cloud-template.sh
VM_ID=$1
DISTRO=$2
DISK_SIZE=$3
if [ -z "$VM_ID" ] || [ -z "$DISTRO" ]; then
echo "Usage: $0 <vm-id> <distro> [disk-size]"
echo "Distro: ubuntu2204, ubuntu2404, debian12, centos9, fedora41"
exit 1
fi
DISK_SIZE=${DISK_SIZE:-8}
# Tạo VM rỗng
qm create $VM_ID \
--name "${DISTRO}-template" \
--ostype l26 \
--cpu cputype=host \
--cores 2 \
--memory 2048 \
--scsihw virtio-scsi-pci \
--net0 virtio,bridge=vmbr0
# Download cloud image
case $DISTRO in
ubuntu2204)
IMG_URL="https://cloud-images.ubuntu.com/jammy/current/jammy-server-cloudimg-amd64.img"
;;
ubuntu2404)
IMG_URL="https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img"
;;
debian12)
IMG_URL="https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2"
;;
*)
echo "Unsupported distro"
exit 1
;;
esac
wget -q -O /tmp/cloud-img.img "$IMG_URL"
# Import disk
qm importdisk $VM_ID /tmp/cloud-img.img local-lvm
# Attach disk và cấu hình
qm set $VM_ID --scsi0 local-lvm:vm-${VM_ID}-disk-0
qm set $VM_ID --boot c --bootdisk scsi0
qm set $VM_ID --serial0 socket --vga serial0
qm set $VM_ID --ide2 local-lvm:cloudinit
# Resize disk
qm disk resize $VM_ID scsi0 ${DISK_SIZE}G
# Convert thành template
qm template $VM_ID
echo "Template created: $VM_ID"
# Cleanup
rm /tmp/cloud-img.img
Sử dụng script:
# Tạo Ubuntu 24.04 template
./create-cloud-template.sh 990001 ubuntu2404
# Tạo Debian 12 template
./create-cloud-template.sh 990002 debian12
11. Troubleshooting
VM không boot
Nếu bạn gặp lỗi VM khởi chạy từ Proxmox Cloud Images không thể boot, nguyên nhân có thể do cấu hình ổ cứng chưa đúng.
- Kiểm tra boot order:
qm set <vmid> --boot c --bootdisk scsi0 - Kiểm tra disk đã attach:
qm config <vmid> | grep scsi
Cloud-init không chạy
Lỗi cấu hình Proxmox Cloud Images với cloud-init thường xảy ra nếu file drive chưa được tạo đúng cách.
- Kiểm tra cấu hình Proxmox Cloud Images và cloud-init drive:
qm config <vmid> | grep ide2 - Regenerate cloud-init: Click “Regenerate Image” trong Cloud-Init tab
- Xem cloud-init logs:
journalctl -u cloud-init
Console không hiển thị gì
Nếu console màn hình hiển thị bị trắng trơn, bạn cần kiểm tra lại VGA và serial socket.
- Kiểm tra VGA setting:
qm set <vmid> --vga serial0 - Thử dùng xterm.js console thay vì noVNC
Kết Luận
Dùng Proxmox Cloud Images trên hệ thống ảo hóa giúp tối ưu proxmox và tiết kiệm rất nhiều thời gian khi deploy nhiều VMs. Chỉ cần setup template một lần, sau đó clone và cấu hình cloud-init là xong.
Kết hợp với UFW Firewall để bảo mật VMs trên Proxmox.
- Tạo template ảo hóa với Proxmox Cloud Images.
- Dùng cloud-init để cấu hình tự động.
- Clone khi cần tạo VM mới từ template Proxmox Cloud Images.
- Tiết kiệm thời gian install từ ISO.


