Tùy biến Cloud Image Linux với virt-customize: Nhanh, gọn, không cần boot VM

Virtualization tutorial - IT technology blog
Virtualization tutorial - IT technology blog

Tại sao phải khổ sở với Cloud-init khi chỉ cần test lab?

Tải một bản Ubuntu hay CentOS Cloud Image (.qcow2) về chạy KVM thì cực nhẹ. Nhưng ngặt nỗi, các bản này thường khóa mật khẩu mặc định và yêu cầu Cloud-init để cấu hình. Nếu chỉ cần dựng nhanh 1-2 con VM để test, việc thiết lập Cloud-init server hay viết file metadata thực sự rất phiền phức và tốn thời gian.

Trước đây, mình thường phải boot máy ảo lên, mở console rồi gõ lệnh thủ công. Làm một máy thì vui, nhưng đến máy thứ 5 là bắt đầu thấy nản. Với cụm Homelab 12 VM trên Proxmox của mình, việc dùng virt-customize giúp tiết kiệm tới 80% thời gian chuẩn bị. Thay vì mất 5-10 phút cấu hình mỗi con, giờ mình chỉ tốn chưa đầy 60 giây để có một image “hàng thửa”.

virt-customize thuộc bộ công cụ libguestfs-tools. Nó cho phép bạn can thiệp trực tiếp vào file disk (.qcow2, .raw, .vmdk) mà không cần bật máy ảo. Hãy tưởng tượng bạn đang “phẫu thuật nội soi” cho ổ cứng ảo vậy. Tiện lợi và cực kỳ chính xác.

Cài đặt virt-customize

Công cụ này chạy tốt trên hầu hết các bản phân phối Linux phổ biến. Lưu ý là bộ libguestfs-tools hơi nặng vì nó kéo theo một mini-kernel để đọc định dạng file hệ thống bên trong image.

Trên Ubuntu/Debian, bạn cài qua lệnh:

sudo apt update && sudo apt install libguestfs-tools -y

Với CentOS/RHEL/Fedora:

sudo yum install libguestfs-tools -y

Mẹo nhỏ: Nếu chạy trên Ubuntu và gặp lỗi truy cập kernel, hãy cấp quyền đọc cho kernel hiện tại bằng lệnh: sudo chmod 0644 /boot/vmlinuz-*. Lỗi này rất phổ biến nhưng ít người để ý.

5 chiêu tùy biến Cloud Image cực nhanh

Giả sử bạn có file ubuntu-22.04.qcow2 vừa tải về. Dưới đây là những lệnh “thực chiến” nhất để biến nó thành bản image sẵn sàng sử dụng.

1. Đặt mật khẩu Root thần tốc

Cloud Image mặc định thường khóa user root. Để login qua console nhanh khi có sự cố, hãy set mật khẩu ngay:

virt-customize -a ubuntu-22.04.qcow2 --root-password password:123456a@

Muốn tạo thêm user riêng cho team? Chỉ cần một dòng lệnh:

virt-customize -a ubuntu-22.04.qcow2 --run-command 'useradd -m -s /bin/bash devops'

2. Inject SSH Key (Bắt buộc phải biết)

Đây là cách chuyên nghiệp nhất để quản lý VM. Thay vì copy-paste thủ công, bạn đẩy thẳng public key vào file authorized_keys bên trong image:

virt-customize -a ubuntu-22.04.qcow2 --ssh-inject root:file:/home/user/.ssh/id_rsa.pub

Lệnh này tự động lo mọi việc: từ tạo thư mục .ssh đến set quyền truy cập chuẩn xác.

3. Cài sẵn Package cần thiết

Đừng đợi boot máy xong mới apt install. Bạn có thể cài luôn Vim, Htop hay Curl từ bên ngoài:

virt-customize -a ubuntu-22.04.qcow2 --install vim,htop,curl,net-tools

Cơ chế của nó rất thông minh: nó tự chroot vào image và dùng chính trình quản lý gói (apt/yum) của image đó để tải về.

4. Chỉnh Timezone và Hostname

Để log hệ thống chuẩn xác, hãy đưa múi giờ về Việt Nam:

virt-customize -a ubuntu-22.04.qcow2 --timezone "Asia/Ho_Chi_Minh" --hostname web-srv-01

5. Đẩy file cấu hình vào VM

Nếu đã có sẵn file nginx.conf hoặc script backup, hãy dùng option --upload:

virt-customize -a ubuntu-22.04.qcow2 --upload /path/to/local/nginx.conf:/etc/nginx/nginx.conf

Kiểm tra thành quả

Để chắc chắn mọi thứ đã đúng ý, bạn có thể dùng virt-inspector để “soi” nội dung image mà không cần boot:

virt-inspector -a ubuntu-22.04.qcow2

Lưu ý quan trọng: virt-customize ghi đè trực tiếp lên file gốc. Để an toàn, hãy copy ra một bản backup trước khi thực hiện. Chẳng may gõ nhầm lệnh xóa /etc thì vẫn còn đường lui.

cp ubuntu-22.04.qcow2 ubuntu-custom-v1.qcow2

Để tối ưu hóa thời gian, bạn nên gộp tất cả tùy chọn vào một lệnh duy nhất. Việc này giúp tránh việc phải mount/unmount image nhiều lần:

virt-customize -a my-image.qcow2 \
  --hostname my-vm \
  --root-password password:secret \
  --ssh-inject root:file:~/.ssh/id_rsa.pub \
  --install nginx,git \
  --selinux-relabel

Làm chủ virt-customize là bước đầu tiên để tiến tới làm Infrastructure as Code (IaC) chuyên nghiệp. Thay vì dùng image nặng nề, bạn giờ đây có thể tự tạo template siêu nhẹ chỉ trong vài giây.

Share: