Ubuntu 20.04 cloud-init 无法配置网络

Ubuntu 20.04 cloud-init 无法配置网络

我遇到的问题与 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标题和密钥:networktest/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" ]

相关内容