使用Terraform部署Proxmox VM时Cloud-Init静态IP不生效
以下是针对你的问题的排查和解决步骤:
检查Packer模板的Cloud-Init网络配置
确保制作模板时没有预先在系统中固定DHCP配置(比如手动编写/etc/netplan文件),否则Cloud-Init的静态IP设置会被覆盖。Ubuntu Server默认允许Cloud-Init管理网络,需保证Packer模板中没有修改这一默认行为。验证Terraform的ipconfig0格式
telmate/proxmox provider要求ipconfig0的格式严格为ip=静态IP/子网掩码,gw=网关地址,不能有空格。正确示例:resource "proxmox_vm_qemu" "ubuntu_vm" { # 其他VM配置项 ipconfig0 = "ip=192.168.1.20/16,gw=192.168.1.1" # 已生效的Cloud-Init配置(用户、密钥等) }格式错误会导致Proxmox无法识别静态IP设置,自动 fallback 到DHCP。
检查Proxmox VM的Cloud-Init参数
克隆完成后登录Proxmox WebUI,查看目标VM的「Cloud-Init」选项卡,确认「IP Config」栏是否正确显示了你设置的静态IP和网关。如果未显示,需检查Terraform provider版本是否兼容,或模板是否启用了Cloud-Init驱动器。排查VM内的Cloud-Init执行日志
登录VM后查看/var/log/cloud-init.log,搜索网络配置相关的错误信息(比如IP冲突、格式解析失败)。同时检查生成的netplan配置文件/etc/netplan/50-cloud-init.yaml,确认是否包含指定的静态IP配置。确认模板的Cloud-Init基础设置
确保Packer制作的模板已启用Proxmox的Cloud-Init功能,且模板的「选项」中Cloud-Init的网络配置未被锁定为DHCP。Ubuntu 22.04+版本默认使用networkd作为Cloud-Init的网络渲染器,无需额外修改。
内容的提问来源于stack exchange,提问作者krapulax

