我遇到的问题与 18.04 年前某人记录的问题完全相同堆栈溢出但那里的解决方案不起作用。我重现该问题的步骤如下:
我从创建如下图像开始:
# cloud-localds -vv --network-config=gluster1net.yaml vvv.img vvv.yaml
# qemu-img create -f qcow2 -b focal-server-cloudimg-amd64-disk-kvm.img vvv.qcow2 100G
# virsh create vvv.xml --console
该映像的vvv.img
安装方式与/dev/sr0
虚拟机内部相同。该映像包含您所期望的内容,如下所示:
# ls -l test
total 2
-rw-r--r-- 1 root root 33 Apr 27 21:39 meta-data
-rw-r--r-- 1 root root 321 Apr 27 21:39 network-config
-rw-r--r-- 1 root root 707 Apr 27 21:39 user-data
# cat test/network-config
#cloud-config
network:
version: 2
ethernets:
ens3:
dhcp4: false
dhcp6: false
addresses: [ "2001:000:1:841:1:0:30:100/64" ]
gateway6: 2001:470:1:841::1
nameservers:
search: [ zzz.com ]
addresses: [ "2001:4860:4860::8888", "2001:4860:4860::8844" ]
# cat test/meta-data
{
"instance-id": "iid-local01"
}
当 VM 启动时,user-data
会正确使用。主机名和用户都会被设置,然后我就可以登录了。 会network-config
被忽略,最后我会得到一个默认netplan
配置文件。如果我手动将上面的 yaml 文件复制到 中/etc/netplan
,然后执行netplan apply
此操作,我就会得到所需的网络配置。但这是一个手动过程,cloud-init 应该代替它来做。
我在 cloud-init 文档中找不到任何解决方案。这里有人知道问题出在哪里吗?
答案1
顶级键network
是可选的,由 cloud-init 内部删除。不幸的是,存在一个错误,无法正确删除它:https://bugs.launchpad.net/ubuntu/+source/netplan.io/+bug/1906187
删除文件中的#cloud-config
标题和密钥:network
test/network-config
version: 2
ethernets:
ens3:
dhcp4: false
dhcp6: false
addresses: [ "2001:000:1:841:1:0:30:100/64" ]
gateway6: 2001:470:1:841::1
nameservers:
search: [ zzz.com ]
addresses: [ "2001:4860:4860::8888", "2001:4860:4860::8844" ]