注意:这不是什么新颖高端的技术。您可以随意修改并二次发布我们的代码。
我们乐于分享自己的解决方案,如果您有需求,可以随时联系我们。
目前脚本可制作的镜像有
- rockylinux8
- debian12-bookworm
- almalinux9
- rockylinux9
- debian11-bullseye
- almalinux8
- ubuntu2204-jammy
镜像将从官方或者镜像源中下载,然后创建虚拟机。
使用方法
此脚本有以下几个参数。
storage: 存储池名称
vmbr: 虚拟机网桥名称
可选:user: Cloud init 用户名
可选:password: Cloud init 密码
可选:image: 要制作的特定的镜像
举例
下载并创建全部镜像到 local-lvm 中,网桥为 vmbr0,默认用户名 root,密码 123456。
curl -s https://ivampiresp.com/files/pve/image.sh | bash -s local-lvm vmbr0 root 123456
下载 2000,ubuntu2204-jammy 镜像,存储是 local-lvm, 网桥为 vmbr1,默认用户名 root,密码 123456。
curl -s https://ivampiresp.com/files/pve/image.sh | bash -s local-lvm vmbr1 root 123456 2000,ubuntu2204-jammy
更新镜像
重新执行脚本即可,此脚本会删除原来的虚拟机模板,然后重新执行 wget 并创建虚拟机模板。
添加镜像
仓库地址: https://github.com/iVampireSP/proxmox-ve-template-maker/
编辑 image.sh,在最上面的 os_images 变量中添加镜像即可。
格式为 vmid,os_name。
比如 2000,ubuntu2204-jammy
,其中 2000
是虚拟机模板的 vmid
,ubuntu2204-jammy
是镜像名称。
创建后的虚拟机模板名字是 Template-ubuntu2204-jammy
。
注意
如果检测到相同的 vmid,脚本会删除原 vmid 的机子,然后重新创建,在请慎重使用。
部分镜像 ssh 密码登录可能是关闭的,这意味着可能无法直接通过 ssh 密码登录。
原理
在下载镜像后,会根据预先设置的虚拟机名称,判断虚拟机是否存在。
# 检查是否存在同名的虚拟机,如果存在则删除
local template_name="Template-$os"
qm stop "$vmid"
qm destroy "$vmid" --destroy-unreferenced-disks=1 --purge=1
随后,创建虚拟机
创建虚拟机并转换为模板
qm create "$vmid" --name "$template_name" --memory 1024 --net0 virtio,bridge=$vmbr
# 导入磁盘
qm disk import "$vmid" "$image_file" "$storage"
# 设置参数
qm set "$vmid" --ostype l26 --ciuser="$user" --cipassword="$password" --virtio0 "$storage:vm-$vmid-disk-0" --boot c --bootdisk virtio0 --ide2 "$storage:cloudinit" --scsihw virtio-scsi-pci --serial0 socket --vga serial0
# 转换为模板
qm template "$vmid"
至此,镜像制作完成。
整个脚本运作原理非常简单。