cloud-init 忽略静态 IP 网络配置

Bre*_*ung 6 cloud-init netplan

我运行 Ubuntu 18.04 云映像并尝试通过 cloud-init 配置网络。由于某种原因,当我尝试分配静态 IP 并转而使用 DHCP 时,它会忽略我的网络。我不知道为什么,也不知道如何调试它。有谁知道我是否做错了什么或者我应该如何进一步解决这个问题:

这是我config.yaml用来生成我的config.img

#cloud-config
network:
    version: 2
    ethernets:
        ens2:
            dhcp4: false
            dhcp6: false
            addresses: [10.0.0.40/24]
            gateway4: 10.0.0.1
password: secret # for the 'ubuntu' user in case we can't SSH in
chpasswd: { expire: false }
ssh_pwauth: true
users:
    - default
    - name: brennan
      ssh_import_id: gh:brennancheung
      sudo: ALL=(ALL) NOPASSWD:ALL
hostname: vm
runcmd:
    - [ sh, -xc, "echo Here is the network config for your instance" ]
    - [ ip, a ]
final_message: "Cloud init is done.  Woohoo!"
Run Code Online (Sandbox Code Playgroud)

配置中的其他所有内容似乎都正常工作,但就好像它甚至没有看到该network部分一样。

我将 附加.img为 acdrom以阅读cloud-init. 您可以在此处查看我如何运行它:https://github.com/brennancheung/playbooks/blob/master/cloud-init-lab/Makefile

注意:登录后,我可以/etc/netplannetwork上面的部分替换配置并重新应用它,并且网络可以通过静态 IP 正常运行。所以我认为我没有遗漏任何明显的错误。这让我相信它与 cloud-init 网络模块有关,而不是netplan其本身。

Bre*_*ung 9

我终于弄清楚了。希望这对其他人有帮助。

显然您无法在user-data. 您必须在云提供商的数据源或元数据中指定它。为此,您必须将网络部分移至其自己的文件中,并cloud-init使用该--network-config=...选项构建映像。

前任:

cloud-localds -v --network-config=network-config-v2.yaml seed.img user-data.yaml

我有在本地 KVM 中配置和启动云实例的完整设置(如果它可以帮助其他人)。

https://github.com/brennancheung/playbooks/tree/master/cloud-init-lab