cloud-init and nplan do not parse and use OpenStack networking correctly with netmask
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-init |
Fix Released
|
Medium
|
Dimitri John Ledkov | ||
cloud-init (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Xenial |
Fix Released
|
Medium
|
Unassigned | ||
Yakkety |
Fix Released
|
Medium
|
Unassigned | ||
Zesty |
Fix Released
|
Medium
|
Unassigned |
Bug Description
=== Begin SRU Template ===
[Impact]
On Openstack instances, cloud-init incorrectly rendered netplan
configuration files. The result is that networking does not work
as expected.
Note that this is not a default configuration on any Ubuntu provided images.
Default images use ifupdown (eni) rendering which did not have this issue.
[Test Case]
The basic idea below is:
a.) launch an instance with proposed version of cloud-init.
b.) inside instance, get cloud-init's network rendering tool from trunk
c.) run the rendering tool against a config that failed before.
d.) check rendered netplan config to verify it has the correct format.
The failed output would have 'addresses' with a format like:
172.
The expected output would be 'cidr' format:
172.19.1.34/24
## launch an instance.
$ release=xenial
$ ref=$release-
$ lxc-proposed-
$ lxc init $ref $name
## get render tool
$ wget https:/
## write the network_data.json
$ cat >network_data.json <<EOF
{
"links": [
{"ethernet_
"id": "tap1a", "type": "phy", "vif_id": "1a81968a"}
],
"networks": [
{"id": "network0", "ip_address": "172.19.1.34", "link": "tap1a",
"netmask": "255.255.255.0", "network_id": "dacd568d", "type": "ipv4",
"routes": [
{"gateway": "172.19.3.254", "netmask": "0.0.0.0",
"network": "0.0.0.0"}]}
],
"services": [{"address": "172.19.0.12", "type": "dns"}]
}
EOF
## run the converter
$ ./net-convert.py --network-
--
-m eth1,aa:
## check the output
$ cat out.d/etc/
network:
version: 2
ethernets:
eth1:
- 172.19.1.34/24
match:
- 172.19.0.12
routes:
- to: 0.0.0.0/0
## show the cloud-init versions
$ dpkg-query --show cloud-init
...
[Regression Potential]
The change is fairly safe in that it basically renders:
172.19.1.34/24
instead of
172.19.
The previous rendering just plain did not work as it is not valid
input for netplan. So the regression path there should be low.
The common code changes could shake out other failures in the networking
path.
[Other Info]
Upstream commit at
https:/
lxc-proposed-
https:/
It publishes an image to lxd with proposed enabled and cloud-init upgraded.
=== End SRU Template ===
networking data josn has:
"ip_address" : "104.130.20.155",
"netmask" : "255.255.255.0"
"ip_address" : "10.184.3.234",
"netmask" : "255.255.240.0",
that got rendered into nplan as:
- 104.130.
- 10.184.
which it failed to parse
Stderr: Error in network definition //etc/netplan/
I believe nplan is expecing CIDR notation of /24 or some such. I belive the current plan is to fix cloud-init to generate /24 cidr notation in the nplan renderer.
This needs SRU into xenial.
Related branches
- Scott Moser: Approve
- Server Team CI bot: Approve (continuous-integration)
- Ryan Harper: Needs Fixing
-
Diff: 81 lines (+12/-10)4 files modifiedcloudinit/net/netplan.py (+8/-6)
cloudinit/net/network_state.py (+2/-2)
tests/unittests/test_distros/test_netconfig.py (+1/-1)
tests/unittests/test_net.py (+1/-1)
Changed in cloud-init (Ubuntu): | |
status: | New → Confirmed |
Changed in cloud-init (Ubuntu Xenial): | |
status: | New → Confirmed |
Changed in cloud-init (Ubuntu Yakkety): | |
status: | New → Confirmed |
Changed in cloud-init (Ubuntu Zesty): | |
status: | New → Confirmed |
Changed in cloud-init (Ubuntu): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu Xenial): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu Yakkety): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu Zesty): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu): | |
status: | Confirmed → In Progress |
Changed in cloud-init: | |
assignee: | nobody → Dimitri John Ledkov (xnox) |
importance: | Undecided → Medium |
status: | New → Fix Committed |
no longer affects: | nplan (Ubuntu) |
no longer affects: | nplan (Ubuntu Xenial) |
no longer affects: | nplan (Ubuntu Yakkety) |
no longer affects: | nplan (Ubuntu Zesty) |
description: | updated |
We've discussed on IRC that netplan shouldn't accept /x.x.x.x syntax for netmasks and should require CIDR for simplicity/ consistency. So this is on netplan to output the correct v2 yaml.