在PVE上创建Gentoo模板
Gentoo官方在最近推出了官方的qcow2镜像,同时还有cloud init的支持,这篇文章就记录一下如何在Proxmox VE上面进行使用。
Cloud init是负责虚拟机早期的初始化。当虚拟机第一次启动的时候内部的cloud init软件会应用给定的一些配置,比如说主机名、IP、DNS、安装哪些包等等。
Proxmox 模板与 Cloud-Init 结合使用,可以快速部署新的虚拟机。模板可用于快速创建新虚拟机,而 Cloud-Init 负责初始化新虚拟机,使你只需设置主机名和初始用户账户。这样,每次创建新虚拟机时,就不再需要从头安装操作系统。
下载
这个地方有多个版本:
这里选择的是带有cloud init支持的版本。
下载:
wget -c https://distfiles.gentoo.org/releases/amd64/autobuilds/20250223T170333Z/di-amd64-cloudinit-20250223T170333Z.qcow2
创建模板
首先创建一个叫gentoo-cloudinit
的虚拟机,虚拟机类型为q35:
qm create 114514 --name gentoo-cloudinit --net0 virtio,bridge=vmbr0 --scsihw virtio-scsi-pci --machine q35
导入qcow2镜像以及调整对应的磁盘大小:
这里的ceph-pve是我的存储卷,你可以根据你的实际情况去调整
qm set 114514 --scsi0 ceph-pve:0,discard=on,ssd=1,format=qcow2,import-from=/root/di-amd64-cloudinit-20250223T170333Z.qcow2
qm disk resize 114514 scsi0 20G
设置启动顺序:
qm set 114514 --boot order=scsi0
配置cpu和内存:
qm set 114514 --cpu host --cores 2 --memory 2048
配置uefi:
qm set 114514 --bios ovmf --efidisk0 ceph-pve:1,format=qcow2,efitype=4m
配置cloud init:
qm set 114514 --ide2 ceph-pve:cloudinit
qm set 114514 --agent enabled=1
这里可以根据实际情况去进行配置,一般来说是用户名、dns、ssh key、获取ip的方式:
为了方便我这里将其转换成了模板:
qm template 114514
使用
这里只讲一下如何在UI上用这个模板,实际生产环境的话尽量避免这种用法。
这里选择克隆:
这里需要注意一下克隆的方式是选择full clone不是link clone,填写好虚拟机名称之后即可克隆:
克隆完成之后打开虚拟机即可享用新鲜的gentoo了:
我这里没有直接用cloud init设置固定ip,查了一下arp表拿到了当前虚拟机的ip。实际你可以通过cloud init设置固定ip,这样更方便管理一些。
后记
在有了gentoo cloud init镜像之后在生产环境中使用gentoo的阻力其实小了很多。
可以通过packer去定期构建虚拟机的镜像。
同时还可以设置内网的构建机器,emerge支持设置代理离线构建也不是什么问题,发布binpkg这样每个节点无需消耗大量的时间和资源在更新上。
Gentoo的灵活性很高能够根据不同的硬件进行优化,可以打portage的快照按照快照去做binpkg进行增量更新。在大规模节点的情况下只需要维护好一份portage的配置即可维护成本也是很低的。
在我看来Gentoo在实际生产环境的应用还是很有搞头的,就看未来有没有更多的公司愿意吃这个螃蟹并且回馈上游了。