Proxmox ve7 制作KVM镜像模板

文章目录

Proxmox虽然好用,但是每次创建KVM机器就必须从头安装一次,所以有个模板那就是坠好的。

模板的制作涉及到cloud-init(这玩意超方便),VM模板用一些官方的image,这里以Debian11为例。

先放Cloud-init下载地址:

CentOS7:
https://cloud.centos.org/centos/7/images/

AlmaLinux:
https://repo.almalinux.org/almalinux/8/cloud/x86_64/images/

RockyLinux:
https://download.rockylinux.org/pub/rocky/8.5/images/

Debian11:
https://cloud.debian.org/images/cloud/bullseye/

Debian10:
https://cloud.debian.org/images/cloud/buster/

Ubuntu:
https://cloud-images.ubuntu.com/releases/

镜像要选择带有GenericCloud字样的,这样有了 Cloud-init 驱动,Proxmox可以更好的利用。

教程:

下载镜像:

这里以教程当前Debian11最新模板为例。

直接下载到root根目录即可。

wget -c "https://cloud.debian.org/images/cloud/bullseye/daily/20220117-890/debian-11-genericcloud-amd64-daily-20220117-890.qcow2" -O debian11.qcow2

镜像每天都会更新 如果想要最新版建议不要直接复制我的内容。

导入镜像:

首先创建VM:
qm create 8888 --memory 1024 --name debian11 --net0 virtio,bridge=vmbr0

然后导入下载的镜像到local存储盘中:
qm importdisk 8888 debian11.qcow2 local

2022.7.5更新:

Ubuntu镜像为img格式,与qcow2文件通用。其他步骤一致
qm importdisk 8888 ubuntu-20.04-server-cloudimg-amd64.img local

将镜像磁盘以scsi方式挂载至VM:
qm set 8888 --scsihw virtio-scsi-pci --scsi0 local:8888/vm-8888-disk-0.raw

添加 Cloud-Init驱动和显示串行端口:
qm set 8888 --ide2 local:cloudinit --boot c --bootdisk scsi0 --serial0 socket --vga serial0

设置IP为DHCP:
qm set 8888 --ipconfig0 ip=dhcp

启动VM:
qm set 8888 --boot c --bootdisk scsi0

镜像Cloud-init设置:

Cloud-init 驱动是Proxmox一项特色,可以在外部直接管理虚拟机,而不用在VM内部操作。

Cloud-init设置

按照途中顺序设置好用户和网络,生成映像即可。

当然如果你看了我之前的DHCP分发IP地址,那也可以不用设置第3步,让VM自动获取即可。

优化镜像:

首先开启ssh的root登录:

cat >> /etc/ssh/sshd_config << EOF
PasswordAuthentication yes
PermitRootLogin yes
EOF
service ssh restart
配置文件中PasswordAuthentication选项默认是NO,需要找到并删除。

修改时区:

timedatectl set-timezone Asia/Shanghai
timedatectl set-timezone Europe/Amsterdam

开启BBR:

echo "net.core.default_qdisc = fq" >> /etc/sysctl.conf
echo "net.ipv4.tcp_congestion_control = bbr" >> /etc/sysctl.conf
sysctl -p 

剩下就是你自己需要的内容,可以内置宝塔,LNMP之类的应用程序,方便生成直接使用。
另外如果是国内网络建议设置一下镜像站,改为清华或163。

更新:

Debian系如果开机遇到:
A start job is running for Raise network interfaces

等待时间过长的话。需要修改模板中默认网卡的等待时间:
nano /etc/systemd/system/network-online.target.wants/networking.service

将最后一行修改为:
1sec

Ubuntu系将系统等待时间关闭即可:

systemctl disable systemd-networkd-wait-online.service
systemctl mask systemd-networkd-wait-online.service

CentOS SSH密码连接缓慢:

vi /etc/ssh/sshd_config
UseDNS no

CentOS8/AlmaLinux/RockyLinux开机会显示:Activate the web console with: systemctl enable --now cockpit.socket,关闭方法:

systemctl stop cockpit 
dnf remove -y cockpit 
rpm -e cockpit-system 
rpm -e cockpit-bridge 
rpm -e cockpit-ws 
rm -Rf /run/cockpit 
rm -Rf /etc/cockpit 
rm -Rf /usr/share/cockpit 
rm -Rf /var/lib/selinux/targeted/active/modules/100/cockpit 
rm -Rf /usr/share/selinux/targeted/default/active/modules/100/cockpit

最后彻底删除所有命令以及登录信息:

echo > /var/log/syslog
echo > /var/log/messages
echo > /var/log/httpd/access_log
echo > /var/log/httpd/error_log
echo > /var/log/xferlog
echo > /var/log/secure
echo > /var/log/auth.log
echo > /var/log/user.log
echo > /var/log/wtmp
echo > /var/log/lastlog
echo > /var/log/btmp
echo > /var/run/utmp
echo > ~/.bash_history
history -c

set +o history && rm .viminfo -rf && cat /dev/null > ~/.bash_history && history -c && exit

做完这一切就在Proxmox控制台中关闭VM即可。

生成模板:

qm template 8888

模板创建至此结束。

结尾:

创建新的VM

如图选择完整克隆即可。

生成VM之后记得在Cloud-init修改一下网络用户相关信息即可。

最最后PS 制作多个模板的时候,VM ID尽量填大一些,不要与正常VM ID冲突。

原文链接:,转发请注明来源!

发表评论