我搜索了整个互联网还没有找到任何解决方案。
我有一个 OVH + Proxmox 实例。计划自动启动 VM 过程。我知道我可以尝试使用 cloud-init,但由于我在家中使用 Packer +(可能)Terraform 作为 ESXi,所以我想尝试对 Proxmox 云使用同样的东西。
当前设置:
- 我有
packer.json
,配置很好。 - 我有一个
debian-preseed.cfg
。
安装 ESXi 时,托管preseed.cfg
在本地并使用私有 IP。效果很好。
但是 OVH 上的 Proxmox 无法访问我的本地预播,因此我决定将其托管在 AWS S3 上。这时问题就出现了。
问题:构建 Proxmox 映像的 VM 无法访问 AWS 上的预置文件 -https://bucket-name.s3.regions.amazonaws.com/dir/debian-preseed.cfg
我花了几个小时试图找出根本原因。看来虚拟机的网络配置不正确。
我使用 DHCP + Mac-To-Static IP 来简化安装过程。我很确定如果我手动安装 VM,它会起作用。但是,似乎只有在安装 Debian 后才能访问 IP 和网络?
这有什么原因导致它不起作用吗?我是否应该先切换到使用网桥+私有 IP,然后在使用时手动设置公共 IP?
答案1
问题可能在于(不可)预测的网络接口。
该图像可能有/etc/network/interfaces
如下内容:
auto ens4
iface ens4 inet dhcp
mtu 1500
这可能在本地有效,但部署到其他地方时可能无法有效。
在构建虚拟机镜像时,你可以禁用(不可)预测的网络接口
GRUB_CMDLINE_LINUX="net.ifnames=0 biosdevname=0"
并假设您的单个接口将被命名为eth0
。
OVH 也使用 Packer 来构建图像,但cloud-init
同样如此。
cloud-init
第一次运行
- 设置主机名,请参阅
/var/lib/cloud/data/set-hostname
- 更新
/etc/hosts
- 尝试配置网络(参见例如
/etc/network/interfaces.d/50-cloud-init
) - 移除
/var/lib/cloud/data/no-net
当您无法在构建 VM 映像时预测接口命名时,这种方法很有意义。