cloud-init NoCloud の local-init で network を設定させたい場合、cloud-localds
の --network-config
で netplan の設定ファイルを指定できることになっている。指定の通りに netplan の yaml ファイルを作って実行する。
cloud-localds -N network.yaml guest.iso guset.user-data
すると、こんなエラーがでて困っていた。
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 653, in sta>
ret = functor(name, args)
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 362, in mai>
init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 699, in apply>
self.distro.networking.wait_for_physdevs(netcfg)
File "/usr/lib/python3/dist-packages/cloudinit/distros/networking.py", line 1>
physdevs = self.extract_physdevs(netcfg)
File "/usr/lib/python3/dist-packages/cloudinit/distros/networking.py", line 4>
return net.extract_physdevs(netcfg)
File "/usr/lib/python3/dist-packages/cloudinit/net/__init__.py", line 493, in>
raise RuntimeError('Unknown network config version: %s' % version)
RuntimeError: Unknown network config version: None
デバッグしてよーくよく見てみると、network.yaml
は次のようになっていないといけない。version
はトップレベル。network
をトップレベルにしてはいけないということだった。netplan のドキュメントみながら書くとはまってしまった。
---
# DO THIS
version: 2
ethernets: {}
---
# NOT DO THIS
network:
version: 2
ethernets: {}