给官方模板Debian 12 Generic Cloud安装qemu-guest-agent
前言
有时候做PVE,有些预装环境必须得有,因此有了本文
下载官网系统
我们将下载官方的 Debian 12 (Bookworm) Cloud 镜像,并将其配置为模板,存放在你的 ZFS-Data 存储中。
请在 PVE 的 >_ Shell 中,依次按顺序执行以下命令:
1. 下载官方 Debian 12 镜像
首先,我们将镜像下载到 PVE 的根目录(下载完用后可以删除):
wget https://cloud.debian.org/images/cloud/bookworm/latest/debian-12-generic-amd64.qcow2 -O /root/debian12.qcow22. 创建基础虚拟机配置
创建一个 ID 为 9000(你可以改成你喜欢的数字),名为 Debian-12-Template 的虚拟机,分配 2核 CPU 和 2GB 内存:
qm create 9000 --name "Debian-12-Template" --memory 2048 --cores 2 --net0 virtio,bridge=vmbr03. 导入磁盘到 ZFS-Data
将刚才下载的 qcow2 镜像导入到你新建的 ZFS-Data 存储池中:
qm importdisk 9000 /root/debian12.qcow2 ZFS-Data(注意:这一步系统会自动将镜像转换为 ZFS 原生的 zvol 格式,需要几秒钟时间)
4. 挂载磁盘与配置 Cloud-Init 硬件
依次执行以下命令,将刚才导入的磁盘挂载给虚拟机,并添加 Cloud-Init 所需的组件:
# 将导入的磁盘作为 SCSI 挂载,并开启 SSD 模拟和 TRIM 支持(对 ZFS 很重要)
qm set 9000 --scsihw virtio-scsi-pci --scsi0 ZFS-Data:vm-9000-disk-0,discard=on,ssd=1
# 添加 Cloud-Init 驱动器到 ZFS-Data
qm set 9000 --ide2 ZFS-Data:cloudinit
# 设置引导顺序,优先从 SCSI 磁盘启动
qm set 9000 --boot c --bootdisk scsi0
# 配置串行控制台(Cloud 镜像默认将输出重定向到串口,方便你在 PVE 网页的 Console 查看)
qm set 9000 --serial0 socket --vga serial05. 转换为模板并清理垃圾
最后,将其转换为不可修改的模板,并删除刚才下载的安装包:
qm template 9000
rm /root/debian12.qcow2执行完以上所有步骤后,你会在左侧菜单看到一个 ID 为 9000 的模板图标。
如何使用这个模板?
- 右键点击这个模板,选择 克隆 (Clone)。
- 模式选择 完整克隆 (Full Clone)(推荐),目标存储选择
ZFS-Data。 - 克隆完成后,点击新虚拟机的 Cloud-Init 选项卡,在里面填写你想要的用户名、密码、SSH 公钥以及静态 IP。
- 点击 重置数据并生成 (Regenerate Image),然后开机即可。系统会自动根据你的设置初始化。
原始模板基础上,做预装
官方原版的 Debian 12 Generic Cloud 镜像默认没有预装 qemu-guest-agent,并且我们在上一组命令中也没有在 PVE 层面为这个虚拟机开启 Agent 功能。
如果没有 Guest-Agent,PVE 的 Web 界面将无法直接读取虚拟机的真实 IP 地址,并且在执行“关机 (Shutdown)”时可能会遇到超时或只能强制断电的情况。对于你后续如果要做 WHMCS 对接和自动化开通,这个功能是必须的。
既然刚才的 9000 已经转换成了模板(模板的磁盘是只读的),最标准且一劳永逸的做法是:从 9000 克隆一台出来,装好 Agent 并清理干净,然后把它做成新的最终版模板。
你可以直接在 PVE 的 Shell 中按顺序执行以下步骤:
1. 克隆并开启 Agent 功能
先从 9000 完整克隆出一个 9001(作为你的新模板基础),并在 PVE 配置中开启 Agent 选项:
# 完整克隆 9000 到 9001,命名为 Debian-12-Template-Agent
qm clone 9000 9001 --name "Debian-12-Template-Agent" --full 1 --storage ZFS-Data
# 在 PVE 层面为 9001 开启 QEMU Guest Agent 支持
qm set 9001 --agent 12. 配置初始网络并开机
为了能连上网下载 Agent,我们需要通过 Cloud-Init 给它配置一下 IP(假设你的 PVE 桥接网络有 DHCP,我们先用 DHCP 让它连上网):
# 设置 Cloud-Init 网络为 DHCP,并设置一个临时密码 (例如 password)
qm set 9001 --ipconfig0 ip=dhcp --cipassword "password"
# 开机
qm start 90013. 进入系统安装 Agent
等待几十秒让它开机并获取到 IP 后,你可以直接在 PVE 网页端的 控制台 (Console) 里用 root 和刚才设置的密码 password 登录进去。
在虚拟机的终端里执行:
apt update
apt install qemu-guest-agent -y4. 清理环境并重新封装为模板
安装完成后,为了防止这台机器的网卡 MAC 地址、SSH 密钥和临时密码被带到以后的克隆机里,我们需要在虚拟机的终端里执行清理命令,然后关机:
# 重置 Cloud-Init 状态
cloud-init clean
# 清理历史记录并关机
history -c
poweroff5. 转换为最终模板
等 9001 完全关机后,回到 PVE 的 Shell,把它转换成模板:
qm template 9001现在,9001 就是一个完美包含了 qemu-guest-agent 的 Debian 12 模板了。原来的 9000 模板你可以直接在网页端右键“销毁”掉。
当前页面是本站的「Google AMP」版。查看和发表评论请点击:完整版 »