開始前先了解

Cloud image 是供雲端部署使用的磁碟映像, 與安裝程式使用的 ISO 不同. 請從 Ubuntu 官方來源取得, 同時核對下載頁的 SHA256 校驗資訊. 不要把一般 ISO 當成 Cloud-Init 系統磁碟.

示範使用未占用的 VMID 120, 名稱 cloud-ubuntu, 磁碟放在支援 VM 磁碟的 local. 網路連到獨立的 vmbr1 並使用 VLAN 100, 不調整管理橋接器 vmbr0. 請依自己的空閒 VMID, 儲存與橋接器修改範例.

下方 qm 指令在 Proxmox VE 節點的終端機執行. 若選擇在既有 Ubuntu VM 內安裝 cloud-init 套件來製作模板, 套件安裝則必須在該 VM 內執行.

本系列使用 Proxmox VE 9 繁體中文介面的真實截圖. 節點, 儲存名稱與示範數值請換成自己的環境; 作業系統安裝程式可能維持其原有語言.

01下載官方 Ubuntu cloud image 並核對來源

開啟節點的終端機, 從 Ubuntu 官方 noble 目錄取得 24.04 系列的 cloud image. 下列示範將檔案存到節點的專用工作目錄, 供匯入磁碟時讀取; 這不會讓它變成 ISO.

下載後計算 SHA256, 與同一官方目錄公布的 SHA256SUMS 比對. 名稱相同仍可能是不同日期的映像, 應核對自己實際下載的版本.

mkdir -p /root/cloud-images
wget -O /root/cloud-images/noble-server-cloudimg-amd64.img \
  https://cloud-images.ubuntu.com/noble/current/noble-server-cloudimg-amd64.img
sha256sum /root/cloud-images/noble-server-cloudimg-amd64.img
Proxmox VE 節點終端機顯示 Ubuntu cloud image 的實際 SHA256 與官方校驗清單 放大圖片
使用官方 cloud image, 並核對實際下載檔案的 SHA256.

02建立測試 VM, 匯入磁碟並加入 Cloud-Init Drive

先確認 VMID 120 尚未使用. 下列指令建立一台 2 核心, 2048 MiB 記憶體的測試 VM, 將映像匯入為 qcow2 系統磁碟, 再加入 Cloud-Init Drive 與序列主控台, 並將系統磁碟擴充為 8 GiB.

local 必須允許 VM 磁碟內容, vmbr1 也必須已存在. 若任一步失敗, 先查明原因, 不要接著開機或對既有 VM 重複貼上整段.

qm create 120 --name cloud-ubuntu --memory 2048 --cores 2 \
  --net0 virtio,bridge=vmbr1,tag=100 --scsihw virtio-scsi-pci
qm set 120 --scsi0 local:0,import-from=/root/cloud-images/noble-server-cloudimg-amd64.img,format=qcow2
qm set 120 --ide2 local:cloudinit --boot order=scsi0
qm set 120 --serial0 socket --vga serial0
qm disk resize 120 scsi0 8G
cloud-ubuntu 虛擬機硬體清單包含系統磁碟, Cloud-Init Drive 與序列埠 放大圖片
核對系統磁碟, Cloud-Init Drive 與開機順序都已設定.

03設定帳號, SSH 公鑰與網路

選取 cloud-ubuntu 的 Cloud-Init 頁面, 設定登入使用者, 並依需求提供自己的 SSH 公鑰或密碼. 公鑰通常是 .pub 檔案, 不能貼入 SSH 私鑰. 使用可辨識的主機名稱, 避免多台部署都沿用相同名稱.

在 IP 設定填入測試網段內未使用的位址, 本篇使用 192.168.50.12/24. 只有該橋接網路確實提供 DHCP 時才選 DHCP. 沒有路由器的內部網路不應填入猜測的閘道; 要連外時需另外具備正確的網路規劃. 本篇隔離網路沒有連外路由, 因此將 "更新套件資料" 設為 "否"; 能正常連外的環境可依維護需求啟用. 修改後按 "重新產生映像", 再核對設定.

Cloud-Init 頁面顯示使用者, SSH 公鑰與 IP 設定, 密碼資訊已遮蔽 放大圖片
先填妥首次開機要帶入的帳號與網路資料, 再重新產生 Cloud-Init 映像.

04首次開機並驗證登入與網路

按 "啓動", 等待首次初始化完成. 可開啟 "主控台" 登入, 或從可到達測試網段的管理端使用 SSH 公鑰登入. 使用自己設定的帳號登入, 核對主機名稱與 IP, 並查看 Cloud-Init 的執行狀態. 初始化尚未完成前, 不要立即關機或製作模板.

若使用 SSH 公鑰, 請從能到達該測試網段的另一台主機驗證 SSH 登入. 內部橋接器不會自動提供外部連線. 後續如需批次部署, 可將準備完成的專用來源製作成模板, 再為每個複本設定獨立帳號與網路識別.

cloud-init status --wait
hostname
ip -br address
在 PVE 命令列經管理容器使用 SSH 公鑰連入 Ubuntu, 查詢 Cloud-Init 完成狀態及 IP 放大圖片
畫面透過管理容器 SSH 連入 guest, 確認 status: done, 主機名稱與私人 IP.

完成後如何確認

Cloud-Init 頁面的設定與 guest 內的主機名稱, 帳號及 IP 相符.

能使用自己設定的認證登入, 且知道該 VM 所在的網路是否可連外.

常見問題

修改 Cloud-Init 頁面後, 已開機的 VM 會立刻更新嗎?

不一定. 許多設定在首次開機時套用, Cloud-Init 也會記錄已執行的階段. 對已投入使用的 VM, 應依系統的正常管理方式修改, 不要為了重跑初始化任意清除狀態.

可以把自己的 SSH 私鑰貼到面板嗎?

不可以. 這裡要提供的是 SSH 公鑰, 私鑰應保存在自己的管理電腦. 密碼, 私鑰與初始化中的機密資料也不應出現在公開截圖.

操作時需要協助?

告訴我們您停在哪個步驟, 由客服協助您確認.

聯絡客服