This bug was fixed in the package cloud-init - 0.7.9-153-g16a7302f- 0ubuntu1~17.04.1
--------------- cloud-init (0.7.9-153-g16a7302f-0ubuntu1~17.04.1) zesty-proposed; urgency=medium * New upstream snapshot. - net: fix reading and rendering addresses in cidr format. [Dimitri John Ledkov] (LP: #1689346, #1684349) - disk_setup: udev settle before attempting partitioning or fs creation. (LP: #1692093) - GCE: Update the attribute used to find instance SSH keys. [Daniel Watkins] (LP: #1693582) - nplan: For bonds, allow dashed or underscore names of keys. [Dimitri John Ledkov] (LP: #1690480) - tests: python2.6: fix unit tests usage of assertNone and format. - tests: update docstring on test_configured_list_with_none - fix tools/ds-identify to not write None twice. - tox/build: do not package depend on style requirements. - tests: ntp: Restructure cc_ntp unit tests. [Chad Smith] - flake8: move the pinned version of flake8 up to 3.3.0 - tests: Apply workaround for snapd bug in test case. [Joshua Powers] - RHEL/CentOS: Fix dual stack IPv4/IPv6 configuration. [Andreas Karis] - disk_setup: fix several issues with gpt disk partitions. (LP: #1692087) - function spelling & docstring update [Joshua Powers] - tests: Fix unittest bug in ntp tests. [Joshua Powers] - tox: move pylint target to 1.7.1 - Fix get_interfaces_by_mac for empty macs (LP: #1692028) - DigitalOcean: remove routes except for the public interface. [Ben Howard] (LP: #1681531.) - netplan: pass macaddress, when specified, for vlans [Dimitri John Ledkov] (LP: #1690388) - doc: various improvements for the docs on cc_users_groups. [Felix Dreissig] - cc_ntp: write template before installing and add service restart [Ryan Harper] (LP: #1645644) - tests: fix cloudstack unit tests to avoid accessing /var/lib/NetworkManager [Lars Kellogg-Stedman] - tests: fix hardcoded path to mkfs.ext4 [Joshua Powers] (LP: #1691517) - Actually skip warnings when .skip file is present. [Chris Brinker] (LP: #1691551) - netplan: fix netplan render_network_state signature. [Dimitri John Ledkov] (LP: #1685944) - Azure: fix reformatting of ephemeral disks on resize to large types. (LP: #1686514) - make deb: Add devscripts dependency for make deb. Cleanup packages/bddeb. [Chad Smith] (LP: #1685935) - openstack: fix log message copy/paste typo in _get_url_settings [Lars Kellogg-Stedman] - unittests: fix unittests run on centos [Joshua Powers] - Improve detection of snappy to include os-release and kernel cmdline. (LP: #1689944) - Add address to config entry generated by _klibc_to_config_entry. [Julien Castets] (LP: #1691135) - sysconfig: Raise ValueError when multiple default gateways are present. [Chad Smith] (LP: #1687485) - FreeBSD: improvements and fixes for use on Azure [Hongjiang Zhang] (LP: #1636345) - Add unit tests for ds-identify, fix Ec2 bug found. - fs_setup: if cmd is specified, use shell interpretation. [Paul Meyer] (LP: #1687712) - doc: document network configuration defaults policy and formats. [Ryan Harper] - doc: Fix name of "uri" key in docs for "cc_apt_configure" module [Felix Dreissig] - tests: Enable artful in integration tests [Joshua Powers] -- Scott Moser <smo...@ubuntu.com> Fri, 26 May 2017 16:14:09 -0400 ** Changed in: cloud-init (Ubuntu Zesty) Status: Fix Committed => Fix Released -- You received this bug notification because you are a member of Yahoo! Engineering Team, which is subscribed to cloud-init. https://bugs.launchpad.net/bugs/1691135 Title: address field not set when reading cmdline/initramfs configured network Status in cloud-init: Fix Committed Status in cloud-init package in Ubuntu: Fix Released Status in cloud-init source package in Xenial: Fix Released Status in cloud-init source package in Yakkety: Fix Released Status in cloud-init source package in Zesty: Fix Released Bug description: === Begin SRU Template === [Impact] When cloud-init sees 'ip=' on the kernel command line, it will take the networking configuration that is written by the ipconfig tool, and convert it into the proper network config for the system (/etc/network/interfaces). This works well for the 'ip=dhcp' and 'ip=dhcp6' cases, but did not work correctly for the "statick" path with a command line like: ip=<client-ip>::<gw-ip>:<netmask>:<hostname>:device:... Cloud-init would stack trace when trying to bring up this networking resulting in a system that did not boot properly. [Test Case] The basic idea below is: a.) launch an instance with proposed version of cloud-init. b.) inside instance, use cloud-init's net library to convert 'net-eth1.cfg' into a different format, and the render that format using cloud-init's trunk tool 'net-convert.py' ## launch an instance. $ release=xenial $ ref=$release-proposed $ lxc-proposed-snapshot --proposed --publish $release $ref $ lxc launch $ref $name $ lxc exec $ref $name /bin/bash ## get render tool % wget https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1691135/+attachment/4888001/+files/bug-1691135.sh -O bug-1691135.sh % sh ./bug-1691135.sh ## if that runs to completion, then it will show the /etc/network/interfaces ## file and the netplan etc/netplan/50-cloud-init.yaml file. ## if it fails it will stack trace. As seen in the upstream commit, the change is in a very focused path, only changing something when the protocol was 'static'. [Regression Potential] Potential for regression would be limited to the 'ip=' command line path. [Other Info] Upstream commit at https://git.launchpad.net/cloud-init/commit/?id=9d437489b === End SRU Template === As reported by user niluje, if the initramfs tools write a config that has static networking, then cloud-init would not populate the address field in its rendered network config (_klibc_to_config_entry). The result would be incomplete or invalid configuration, and attempt to render that configuration would result in stacktrace due to KeyError. This can be seen in trunk with the net-convert tool as below. Editing the yaml and uncommenting the 'address' line will work. $ cat /tmp/foo.yaml network: version: 1 config: - name: eth1 type: physical subnets: - 'type': 'static' 'broadcast': '10.0.0.255' 'control': 'manual' 'gateway': '10.0.0.1' 'dns_search': ['foo.com'] 'netmask': '255.255.255.0' 'dns_nameservers': ['10.0.1.1'] # 'address': '10.0.0.2' EOF $ PYTHONPATH=$PWD ./tools/net-convert.py --network-data=/tmp/foo.yaml --kind=yaml --output-kind=eni -d /tmp/out.d Input YAML config: - name: eth1 subnets: - broadcast: 10.0.0.255 control: manual dns_nameservers: - 10.0.1.1 dns_search: - foo.com gateway: 10.0.0.1 netmask: 255.255.255.0 type: static type: physical version: 1 Traceback (most recent call last): File "./tools/net-convert.py", line 82, in <module> main() File "./tools/net-convert.py", line 58, in main ns = network_state.parse_net_config_data(pre_ns) File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 42, in parse_net_config_data nsi.parse_config(skip_broken=skip_broken) File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 225, in parse_config self.parse_config_v1(skip_broken=skip_broken) File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 240, in parse_config_v1 handler(self, command) File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 89, in decorator return func(self, command, *args, **kwargs) File "/home/smoser/src/cloud-init/cloud-init/cloudinit/net/network_state.py", line 296, in handle_physical if ':' in subnet['address']: KeyError: 'address' To manage notifications about this bug go to: https://bugs.launchpad.net/cloud-init/+bug/1691135/+subscriptions -- Mailing list: https://launchpad.net/~yahoo-eng-team Post to : yahoo-eng-team@lists.launchpad.net Unsubscribe : https://launchpad.net/~yahoo-eng-team More help : https://help.launchpad.net/ListHelp