ESC

開始輸入,可搜尋發票、服務、域名、工單,以及 更多...

搜尋... Ctrl+K
虛擬化與母雞

Proxmox VE Cloud-Init 模板製作教程:匯入 Debian/Ubuntu 雲映象,一鍵克隆 VPS

5 個步驟 9 分鐘閱讀 20 次閱讀 0
本文目錄

如果你在獨立伺服器上用 Proxmox VE 給客戶開 VPS,每次都掛 ISO 手動裝系統既慢又容易出錯。更高效的方法是製作一個 Proxmox VE Cloud-Init 模板:匯入 Debian 或 Ubuntu 官方雲映象,掛上 cloud-init 驅動器,轉換成模板後,每開一台 VPS 只需克隆並設定 IP、SSH 金鑰和密碼,幾十秒即可交付。本文適用於 Proxmox VE 7.x / 8.x,所有命令在宿主機 root 下執行。

示例中模板 ID 為 9000,虛擬機器磁碟儲存為 local-lvm,公網網橋為 vmbr0,IP 使用文件示例地址 203.0.113.0/24,請替換為 IMIDC 分配給你的實際 IP 段與閘道器。給虛擬機器分配公網 IP 的細節可參考“PVE 虛擬機器分配 IP”教程。

步驟 1:下載 Debian / Ubuntu 官方 Cloud 雲映象

雲映象是發行版官方為雲平台準備的精簡系統盤,已經內建 cloud-init,首次啟動時會自動讀取主機名、使用者、SSH 金鑰和網路配置。Debian 推薦 genericcloud 版本(體積小、適合 KVM),Ubuntu 使用 server-cloudimg。可選地用 virt-customize 預裝 qemu-guest-agent,方便 PVE 讀取虛擬機器 IP 和安全關機。

cd /var/lib/vz/template/iso   # any directory with enough space
# Debian 12 (bookworm) generic cloud image
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-genericcloud-amd64.qcow2
# Ubuntu 24.04 LTS (noble) cloud image
wget https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img

# optional: preinstall qemu-guest-agent into the image
apt install -y libguestfs-tools
virt-customize -a debian-12-genericcloud-amd64.qcow2 --install qemu-guest-agent

步驟 2:qm create 建立虛擬機器並用 importdisk 匯入雲映象

先建立一台沒有磁碟的空虛擬機器,再把雲映象匯入成它的磁碟,最後把這塊磁碟掛到 scsi0 並設為啟動盤。匯入時 PVE 會自動轉換為目標儲存的格式。

qm create 9000 --name debian12-cloudinit --memory 2048 --cores 2 \
  --cpu host --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --ostype l26

# import the image as a disk of VM 9000 on storage local-lvm
qm importdisk 9000 debian-12-genericcloud-amd64.qcow2 local-lvm
# (PVE 8 also accepts: qm disk import 9000 debian-12-genericcloud-amd64.qcow2 local-lvm)

qm set 9000 --scsi0 local-lvm:vm-9000-disk-0,discard=on
qm set 9000 --boot order=scsi0
匯入後磁碟名稱以命令輸出為準(通常是 vm-9000-disk-0)。如果儲存是目錄類型(如 local),磁碟名會是 9000/vm-9000-disk-0.raw 之類的格式,請按實際輸出填寫。

步驟 3:新增 Cloud-Init 驅動器並設定使用者、SSH 金鑰與 IP

cloud-init 驅動器是一塊虛擬光碟,PVE 會把你在“Cloud-Init”選項卡中填寫的配置寫入其中。雲映象通常需要序列埠控制臺才能在網頁 Console 中正常顯示,因此一併設定 serial0。模板上設定的使用者和金鑰會作為預設值,克隆後可以逐臺覆蓋。

qm set 9000 --ide2 local-lvm:cloudinit
qm set 9000 --serial0 socket --vga serial0
qm set 9000 --agent enabled=1

# defaults stored in the template (can be overridden per clone)
qm set 9000 --ciuser debian --sshkeys /root/.ssh/id_ed25519.pub
qm set 9000 --ipconfig0 ip=dhcp
qm set 9000 --nameserver "1.1.1.1 8.8.8.8"
qm cloudinit dump 9000 user

最後一條命令可以預覽生成的 cloud-init 使用者配置,確認使用者名稱和金鑰已經寫入。

步驟 4:將虛擬機器轉換為 Cloud-Init 模板

不要啟動這臺虛擬機器,直接轉換為模板。模板不能再開機,只能被克隆,磁碟會變成只讀的基礎盤。

qm template 9000
qm list

步驟 5:從模板快速克隆 VPS 並注入 IP 與 SSH 金鑰

克隆分兩種:完整克隆(--full)會複製出獨立磁碟,適合交付給客戶;連結克隆幾乎瞬間完成、節省空間,但依賴模板的基礎盤,模板不能刪除,更適合內部測試。克隆後為每台 VPS 設定獨立的 IP、金鑰或初始密碼,按需擴容磁碟(雲映象原始只有 2–3GB,cloud-init 會在首次啟動時自動擴充套件分割槽)。

# full clone (independent disk) for a customer VPS
qm clone 9000 201 --name vps201 --full --storage local-lvm

# or a linked clone: created in seconds, shares the base disk
# qm clone 9000 202 --name vps202

qm set 201 --cores 2 --memory 4096
qm set 201 --ipconfig0 ip=203.0.113.21/24,gw=203.0.113.1
qm set 201 --sshkeys /root/customer201.pub --cipassword 'Change-Me-123'
qm resize 201 scsi0 +38G
qm start 201

# check
qm guest cmd 201 network-get-interfaces
ssh [email protected]

如果需要批次開通,可以把上面的步驟寫成一個簡單指令碼,傳入 VM ID、IP 和客戶公鑰即可:

#!/bin/bash
# usage: ./newvps.sh 205 203.0.113.25 /root/keys/c205.pub
ID=$1; IP=$2; KEY=$3
qm clone 9000 "$ID" --name "vps$ID" --full --storage local-lvm
qm set "$ID" --ipconfig0 ip="$IP"/24,gw=203.0.113.1 --sshkeys "$KEY"
qm resize "$ID" scsi0 +38G
qm start "$ID"

在網頁後臺也可以操作:右鍵模板 → 克隆 → 選擇“完整克隆”,然後在新虛擬機器的“Cloud-Init”選項卡修改 IP 配置和 SSH 公鑰,點選“重新生成映象”後開機。

常見問題

克隆後的 VPS 無法 SSH 登入?

確認 ipconfig0 的 IP、掩碼和閘道器與 IMIDC 分配的一致;登入使用者是 ciuser 設定的使用者(Debian 預設 debian,Ubuntu 預設 ubuntu),不是 root;修改 Cloud-Init 配置後需要重啟虛擬機器才會生效。可以在 PVE 的 Console(序列埠)中檢視 cloud-init 啟動日誌排查。

磁碟擴容後系統裡還是隻有 2GB?

需要先執行 qm resize 再首次開機,cloud-init 的 growpart 會自動擴充套件根分割槽。如果已經開過機,可在系統內執行 growpart /dev/sda 1 與 resize2fs /dev/sda1(具體分割槽號以 lsblk 為準)。

能不能用 CentOS / Rocky / AlmaLinux 雲映象?

可以。Rocky Linux 和 AlmaLinux 官方都提供 GenericCloud 格式的 qcow2 映象,製作流程與本文完全相同,只是預設使用者分別為 rocky 和 almalinux。

如仍無法解決,可提交工單聯絡 IMIDC 7×24 技術支援:https://www.imidc.com/submitticket.php

這篇文章有幫助嗎?

相關教程