The following relate to LXD and the LXD container images for 16.04 and
18.04. Both container images have cloud-init 18.2 (18.2-4-g05926e48).
SUMMARY
cloud-init fails to set up networking if a container is launched with
cloud-init networking instructions.
WHAT WAS TESTED
16.04 container image with cloud-init v1 and v2 configurations.
18.04 container image with cloud-init v1 and v2 configurations.
HOW TO REPRODUCE
1. Set up LXD
2. Create a new LXD profile. Create first this file (mycloudinit.profile)
---
$ cat mycloudinit.profile
config:
user.network-config: |
network:
version: 1
config:
- type: physical
name: eth0
subnets:
- type: dhcp
description: LXD profile with some cloud-init network-config
devices:
eth0:
nictype: bridged
parent: lxdbr0
type: nic
root:
path: /
pool: default
type: disk
name: mycloudinit
used_by: []
--------------------
and then add it to a profile with:
$ lxc profile create mycloudinit
$ cat version1.profile | lxc profile edit mycloudinit
3. Launch a container while specifying this profile
lxc launch ubuntu:18.04 mycontainer --profile mycloudinit
4. Enter the container and check the cloud-init logs
lxc exec mycontainer -- sudo --user ubuntu --login
cd /var/log/
WHAT ERROR DO YOU GET
ON CONTAINER 18.04, THE ERROR IS:
Cloud-init v. 18.2 running 'init-local' at Tue, 24 Jul 2018 16:31:39 +0000. Up
1.00 seconds.
2018-07-24 16:31:39,793 - stages.py[WARNING]: Failed to rename devices: Failed
to apply network config names. Found bad network config version: None
2018-07-24 16:31:39,794 - util.py[WARNING]: failed stage init-local
failed run of stage init-local
------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 655, in
status_wrapper
ret = functor(name, args)
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 361, in
main_init
init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 653, in
apply_network_config
return self.distro.apply_network_config(netcfg, bring_up=bring_up)
File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line
175, in apply_network_config
dev_names = self._write_network_config(netconfig)
File "/usr/lib/python3/dist-packages/cloudinit/distros/debian.py", line 119,
in _write_network_config
return self._supported_write_network_config(netconfig)
File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line 94,
in _supported_write_network_config
renderer.render_network_config(network_config=network_config)
File "/usr/lib/python3/dist-packages/cloudinit/net/renderer.py", line 53, in
render_network_config
network_state=parse_net_config_data(network_config), target=target)
File "/usr/lib/python3/dist-packages/cloudinit/net/netplan.py", line 193, in
render_network_state
content = self._render_content(network_state)
File "/usr/lib/python3/dist-packages/cloudinit/net/netplan.py", line 227, in
_render_content
if network_state.version == 2:
AttributeError: 'NoneType' object has no attribute 'version'
------------------------------------------------------------
ON CONTAINER 16.04, THE ERROR IS:
Cloud-init v. 18.2 running 'init-local' at Tue, 24 Jul 2018 17:02:13 +0000. Up
1.00 seconds.
2018-07-24 17:02:13,701 - stages.py[WARNING]: Failed to rename devices: Failed
to apply network config names. Found bad network config version: None
2018-07-24 17:02:13,702 - util.py[WARNING]: failed stage init-local
failed run of stage init-local
------------------------------------------------------------
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 655, in
status_wrapper
ret = functor(name, args)
File "/usr/lib/python3/dist-packages/cloudinit/cmd/main.py", line 361, in
main_init
init.apply_network_config(bring_up=bool(mode != sources.DSMODE_LOCAL))
File "/usr/lib/python3/dist-packages/cloudinit/stages.py", line 653, in
apply_network_config
return self.distro.apply_network_config(netcfg, bring_up=bring_up)
File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line
171, in apply_network_config
dev_names = self._write_network_config(netconfig)
File "/usr/lib/python3/dist-packages/cloudinit/distros/debian.py", line 119,
in _write_network_config
return self._supported_write_network_config(netconfig)
File "/usr/lib/python3/dist-packages/cloudinit/distros/__init__.py", line 90,
in _supported_write_network_config
renderer.render_network_config(network_config=network_config)
File "/usr/lib/python3/dist-packages/cloudinit/net/renderer.py", line 53, in
render_network_config
network_state=parse_net_config_data(network_config), target=target)
File "/usr/lib/python3/dist-packages/cloudinit/net/eni.py", line 466, in
render_network_state
util.write_file(fpeni, header + self._render_interfaces(network_state))
File "/usr/lib/python3/dist-packages/cloudinit/net/eni.py", line 423, in
_render_interfaces
for iface in network_state.iter_interfaces():
AttributeError: 'NoneType' object has no attribute 'iter_interfaces'
------------------------------------------------------------
** Changed in: cloud-init (Ubuntu)
Status: Incomplete => New
--
You received this bug notification because you are a member of Ubuntu
Bugs, which is subscribed to Ubuntu.
https://bugs.launchpad.net/bugs/1686338
Title:
cloud-init fails if no network config is set
To manage notifications about this bug go to:
https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1686338/+subscriptions
--
ubuntu-bugs mailing list
[email protected]
https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs