1. Tổng quan.
Chuyển đổi Container sang Template trong Proxmox là quá trình tạo ra một bản sao hình mẫu từ một container hiện có. Template là một tệp tin hoặc hình ảnh ảo của một container được lưu trữ trên một nguồn lưu trữ (storage) trong Proxmox.
Khi chuyển đổi một container thành template, bạn tạo ra một bản sao chính xác của container đó, bao gồm cả hệ điều hành, cài đặt ứng dụng và cấu hình. Template cho phép bạn tạo ra nhiều container mới từ một hình mẫu duy nhất mà không cần cài đặt và cấu hình lại từ đầu. Điều này tiết kiệm thời gian và công sức khi triển khai nhiều container giống nhau hoặc khi bạn cần tạo các máy ảo mới nhanh chóng.
Một số lợi ích của việc sử dụng Template trong Proxmox bao gồm:
- Tiết kiệm thời gian và công sức: Khi bạn có một template, bạn có thể triển khai các container mới chỉ trong vài cú nhấp chuột. Bạn không cần phải cài đặt và cấu hình lại từ đầu mỗi khi tạo một container mới.
- Đảm bảo tính nhất quán: Template đảm bảo rằng các container mới được tạo ra từ cùng một nguồn gốc, đảm bảo tính nhất quán giữa các container và giúp tránh sai sót trong quá trình triển khai.
- Quản lý dễ dàng: Khi bạn có một template, bạn có thể quản lý và cập nhật nó một cách tập trung. Bất kỳ thay đổi nào được thực hiện trên template cũng sẽ được áp dụng cho tất cả các container được tạo từ template đó.
- Tạo các mô hình chuẩn: Bằng cách sử dụng template, bạn có thể xây dựng các mô hình chuẩn hoặc ấn định cho các container, đảm bảo sự thống nhất và dễ dàng quản lý.
2. Quy trình chuyển đổi.
Quá trình chuyển đổi máy ảo thành template trên Proxmox gồm các bước sau:
- Cập nhật hostname: Thay đổi hostname của máy ảo để đảm bảo tính nhất quán trong mạng.
- Xóa machine-id: Xóa machine-id để tránh vấn đề xóa không thành công khi khởi động lại máy ảo.
- Xóa SSH host keys: Xóa các khóa host SSH để đảm bảo tính riêng tư và an ninh.
- Thay thế ifcfg-eth0 PREFIX bằng NETMASK: Chỉnh sửa tệp cấu hình mạng để thay thế giá trị PREFIX bằng NETMASK, giúp xác định mạng con một cách chính xác.
- Chỉnh sửa cấu hình mạng: Xóa các giá trị không cần thiết trong cấu hình mạng, bao gồm giá trị HWADD và các giá trị khác không liên quan.
- Xóa logs: Xóa các logs để giảm kích thước của template và loại bỏ thông tin không cần thiết.
- Cài đặt ovirt-guest-agent-common: Cài đặt gói ovirt-guest-agent-common để hỗ trợ việc quản lý và giám sát máy ảo từ máy chủ Proxmox.
- Hoàn tất các cấu hình và cài đặt bổ sung: Thực hiện các cấu hình và cài đặt bổ sung khác theo nhu cầu cụ thể.
- (Tùy chọn) Cài đặt cloud-init: Nếu muốn sử dụng cloud-init để cấu hình máy ảo khi triển khai, có thể cài đặt gói cloud-init.
- sys-unconfig: Thực hiện lệnh sys-unconfig để xóa thông tin cụ thể của máy chủ và tắt máy.
- Chuyển đổi máy ảo thành template: Thực hiện quá trình chuyển đổi máy ảo hiện tại thành một template, tạo ra một bản sao hình mẫu có thể sử dụng để triển khai các máy ảo mới.
- Triển khai máy ảo sử dụng template: Sử dụng template vừa tạo để triển khai các máy ảo mới, giúp tiết kiệm thời gian và đảm bảo tính nhất quán giữa các máy ảo.
3. Thực hành.
Mình sẽ thực hiện chuyển đổi CT Centos này sang Template.
Thay đổi hostname của máy ảo để đảm bảo tính nhất quán trong mạng
hostnamectl set-hostname localhost.localdomain --static
Veryfi.
$ hostnamectl
Static hostname: localhost.localdomain
Transient hostname: centos-13-203
Icon name: computer-container
Chassis: container
Machine ID: d98c6531925a4bdab8d978500b00efaf
Boot ID: a3e139b419d74f7a85cc27df478593bb
Virtualization: lxc
Operating System: CentOS Linux 8
CPE OS Name: cpe:/o:centos:centos:8
Kernel: Linux 5.15.102-1-pve
Architecture: x86-64
Xóa các giá trị không cần thiết trong cấu hình mạng /etc/sysconfig/network-scripts/ifcfg-eth0, bao gồm giá trị HWADD và các giá trị khác không liên quan, nên để cấu hình mạng DHCP để hệ thống tự nhận IP động.
DEVICE=eth0
ONBOOT=yes
BOOTPROTO=dhcp
DOMAIN=wiki.hoanghd.com
Xóa machine-id để tránh vấn đề xóa không thành công khi khởi động lại máy ảo
echo '' > /etc/machine-id
Xóa các logs để giảm kích thước của template và loại bỏ thông tin không cần thiết bằng cách list các file logs đang có trong hệ thống.
$ ls -al /var/log/
total 216
-rw-rw---- 1 root utmp 768 May 26 12:53 btmp
-rw------- 1 root root 434 May 26 12:56 cron
-rw-r--r-- 1 root root 38296 May 26 13:02 dnf.librepo.log
-rw-r--r-- 1 root root 97654 May 26 13:02 dnf.log
-rw-r--r-- 1 root root 14928 May 26 13:02 dnf.rpm.log
-rw-r--r-- 1 root root 612 May 26 13:02 hawkey.log
-rw-rw-r-- 1 root utmp 17520 May 26 12:53 lastlog
-rw------- 1 root root 0 Dec 10 2020 maillog
-rw------- 1 root root 16155 May 26 13:06 messages
drwx------ 2 root root 4096 Dec 10 2020 private
-rw------- 1 root root 1353 May 26 12:53 secure
-rw------- 1 root root 0 Dec 10 2020 spooler
-rw-rw-r-- 1 root utmp 6144 May 26 12:53 wtmp
Hãy xoá các file không cần thiết.
cd /var/log/
rm -rf btmp cron dnf.librepo.log lastlog maillog messages secure spooler wtmp
Xóa các khóa host SSH để đảm bảo tính riêng tư và an ninh.
cd /etc/ssh/
rm -rf ssh_host_*
Xoá các file cache yum.
yum clean all
Cài đặt cloud-init (Tùy chọn, nếu muốn sử dụng cloud-init để cấu hình máy ảo khi triển khai, có thể cài đặt gói cloud-init.
yum install cloud-init -y
Enable khởi đông cho cloud-init.
systemctl enable cloud-init
Tắt Container.
poweroff
Sau khi Container đã được tắt hoàn toàn, bạn hãy chuyển đổi nó sang template bằng các bước như dưới.
Và template được clone từ CT đã thành công (1), để sử dụng template này bạn có thể bấm chuột phải vào template chọn Clone (2).
Tại phần Clone CT Template <template ID> bạn có 1 số thiết lập sau:
- Target node: Node mục tiêu là nơi máy ảo sẽ được triển khai. Đây là một trong các node có sẵn trong hạ tầng Proxmox và được chọn để chạy máy ảo.
- CT ID: CT ID là một số duy nhất được gán cho container trong hệ thống Proxmox. Nó được sử dụng để xác định và quản lý container trong môi trường Proxmox.
- Hostname: Tên của máy ảo, đây là một tên duy nhất để xác định máy ảo trong hệ thống. Tên này có thể được tùy chỉnh để phù hợp với yêu cầu và sắp xếp hệ thống.
- Resource Pool: Resource Pool là một nhóm tài nguyên trong hệ thống Proxmox, cho phép quản lý tài nguyên một cách thuận tiện và có cấu trúc. Máy ảo có thể được gán vào một Resource Pool để quản lý tài nguyên một cách hiệu quả.
- Mode: Mode xác định cách container được triển khai. Có hai chế độ chính là “Full Clone” và “Linked Clone”. Full Clone tạo ra một bản sao hoàn chỉnh và độc lập của container, trong khi Linked Clone tạo ra một bản sao kết nối chia sẻ dữ liệu với container gốc.
- Target Storage: Target Storage là không gian lưu trữ mà container sẽ được triển khai. Đây có thể là một hệ thống tệp hệ điều hành, một thiết bị lưu trữ mạng hoặc một phương pháp lưu trữ khác mà Proxmox hỗ trợ.
Mình lựa chọn Mode là Full Clone và tạo container trên pve-node1 sau đó bấm Clone.
Kết quả clone thành công.
Và đây là kết quả clone thành công CT từ template CT.