0%

为 Proxmox 制作包含 cloud-init 的虚拟机模板

安装 Centos

在我搭建的 Proxmox 平台中使用了 Ceph 作为虚拟机的后端存储,为了提高虚拟机磁盘性能,在安装虚拟机的时候使用 LVM raid0 逻辑分区挂载根目录。

  • 在 install destination 中选中三块盘并勾选自行分区选项

image.png

  • 点击 automatically create lvm partition 自动创建分区,删除其它分区只保留 /boot 分区

image.png

  • 点击 + 按钮添加新的分区,挂载点为根路径,容量超过磁盘最大容量,安装程序会自动校正到真实的最大可用容量。

image.png

  • 点击 Modify 按钮修改新建分区的 RAID Level 为 RAID0。

image.png

  • 以下是创建完成的分区,保存后按照常规步骤继续安装操作系统。

image.png

调整安装好的操作系统

  • 进入操作系统,首先关闭 selinux、firewalld 和 NetworkManager。
1
2
3
systemctl disable --now firewalld NetworkManager
setenforce 0
sed -ri '/^[^#]*SELINUX=/s#=.+$#=disabled#' /etc/selinux/config
  • 安装 acpid cloud-init cloud-utils-growpart

apcid 是为了可以使 kvm 可以关闭和重启虚拟机,qemu-guest-agent 使得 Proxmox 可以获取虚拟机的 IP 等信息。

1
2
3
yum install -y acpid cloud-init cloud-utils-growpart qemu-guest-agent
systemctl enable acpid
systemctl enable qemu-guest-agent
  • 禁用默认 zeroconf 路线

当系统无法连接 DHCP server 的时候,就会尝试通过 ZEROCONF 来获取 IP,并添加一条 169.254.0.0/16 的路由条目。

1
echo "NOZEROCONF=yes" >> /etc/sysconfig/network
  • 修改 sshd 不使用 dns 防止 ssh 连接慢
1
2
sed -ri '/UseDNS/{s@#@@;s@\s+.+@ no@}' /etc/ssh/sshd_config
systemctl restart sshd
  • 修改 cloud-init 配置

分别是允许 root 登录,允许使用 password 登录,禁止第一次开机自动更新系统。

1
2
3
4
sed -ri '/disable_root/{s#\S$#0#}' /etc/cloud/cloud.cfg
sed -ri '/ssh_pwauth/{s#\S$#1#}' /etc/cloud/cloud.cfg
sed -ri '/package-update/s@^@#@' /etc/cloud/cloud.cfg
sed -ri '/update_etc_hosts/s@^@#@' /etc/cloud/cloud.cfg
  • 如有需要可以自行添加一些额外的配置

我在 /sbin/ifup-local 中添加了如下配置用于配置特殊的路由以适应办公室网络环境。

1
2
3
4
5
6
7
touch /sbin/ifup-local
chmod +x /sbin/ifup-local
cat /sbin/ifup-local
#!/bin/bash
ip r add 192.168.76.0/24 via 192.168.180.254
ip r add 192.168.77.0/24 via 192.168.180.254
exit 0
  • 关机,并在 Proxmox 中为之添加 CloudInit Drive。

image.png

  • 填写相关 init 参数并 regenerate image。

image.png

  • 启用 qemu-agent

image.png

  • 将虚拟机转为模板,之后就可以以此为基础创建新的虚拟机。

参考

proxmox 里使用 cloud-init 和一些笔记

本文到此结束  感谢您的阅读