yahoo-eng-team team mailing list archive
-
yahoo-eng-team team
-
Mailing list archive
-
Message #65345
[Bug 1690388] Re: wrong hwaddr on the vlan bond with nplan and cloud-init
This bug was fixed in the package nplan - 0.23~17.04.1
---------------
nplan (0.23~17.04.1) zesty; urgency=medium
* Backport netplan 0.23 to 17.04. (LP: #1688632)
nplan (0.23) artful; urgency=medium
* Do not unbind brcmfmac, interface will be gone. (LP: #1696162)
nplan (0.22) artful; urgency=medium
* Add support for setting a custom MAC address on all device types.
(LP: #1690388)
* Improved MAC/vlan integration tests; thanks for Dimitri John Ledkov for the
changes.
nplan (0.21) artful; urgency=medium
[ Ryan Harper ]
* Add support for setting MTU on a device. (LP: #1668693)
[ Mathieu Trudel-Lapierre ]
* Don't rebind Atheros AR9271; it would confuse the driver. (LP: #1672740)
* debian/control: Add Conflicts: against netplan; the network 'plan' daemon.
Both ship the same /usr/sbin/netplan. (LP: #1665842)
-- Mathieu Trudel-Lapierre <cyphermox@xxxxxxxxxx> Tue, 06 Jun 2017
17:40:10 -0700
** 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/1690388
Title:
wrong hwaddr on the vlan bond with nplan and cloud-init
Status in cloud-init:
Fix Committed
Status in cloud-init package in Ubuntu:
Fix Released
Status in nplan package in Ubuntu:
Fix Released
Status in cloud-init source package in Xenial:
Fix Released
Status in nplan source package in Xenial:
Fix Released
Status in cloud-init source package in Yakkety:
Fix Released
Status in nplan source package in Yakkety:
Fix Released
Status in cloud-init source package in Zesty:
Fix Released
Status in nplan source package in Zesty:
Fix Released
Bug description:
=== Begin netplan SRU Template ===
[Impact]
Virtual devices such as VLANs, bridges and bonds may require the user to set a specific MAC address for proper operation on networks; where the same MAC may be used by default by the systems due to the methods used to create them.
[Test case]
/!\ This only works with the networkd renderer; NetworkManager does not currently support setting a MAC on bonds and bridges.
1) Set a MAC address for a virtual device (bond, bridge or vlan),
using the following syntax in netplan config:
macaddress: ##:##:##:##:##:##
2) Validate that the device gets the MAC address applied.
[Regression potential]
Failure to bring up a device configured in netplan or to set the MAC should be looked at as a possible regression. Other issues could include failure to write the configuration for networkd or NetworkManager.
=== End netplan SRU Template ===
http://pad.lv/1690388
https://bugs.launchpad.net/ubuntu/+source/cloud-init/+bug/1690388
=== Begin cloud-init SRU Template ===
[Impact]
Virtual devices such as VLANs, bridges and bonds may require the user to set a
specific MAC address for proper operation on networks; where the same MAC may
be used by default by the systems due to the methods used to create them.
cloud-init would not render the mac address of the vlan into its
ifupdown/eni or netplan output. The result is that the vlan device
would not get the desired mac address.
[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 vlan mac addresses present.
[Regression Potential]
Fairly low chance for regression. The mac address fields were just
not being written, and now they will be.
## launch an instance.
$ release=xenial
$ ref=$release-proposed
$ lxc-proposed-snapshot --proposed --publish $release $ref
$ lxc init $ref $name
## get render tool
$ wget https://git.launchpad.net/~cloud-init-dev/cloud-init/plain/tools/net-convert.py -O net-convert.py
## write a network config with vlan and mac address.
$ cat > net-config.yaml <<"EOF"
version: 1
config:
- type: physical
name: eth0
mac_address: "fa:35:9c:85:55:00"
subnets: [{type: dhcp}]
- type: vlan
name: eth0.101
vlan_link: eth0
vlan_id: 101
mac_address: fe:35:9c:85:55:ee
mtu: 1500
subnets:
- type: static
address: 192.168.2.10/24
EOF
$ for k in eni netplan; do
PYTHONPATH=$PWD python3 ./net-convert.py \
--network-data=net-config.yaml --kind=yaml \
--output-kind=$k --mac=eth0,fa:35:9c:85:55:00 \
--directory=out.d ; done
$ cat out.d/etc/network/interfaces
auto lo
iface lo inet loopback
auto eth0
iface eth0 inet dhcp
auto eth0.101
iface eth0.101 inet static
address 192.168.2.10/24
hwaddress fe:35:9c:85:55:ee
mtu 1500
vlan-raw-device eth0
vlan_id 101
$ cat out.d/etc/netplan/50-cloud-init.yaml
network:
version: 2
ethernets:
eth0:
dhcp4: true
match:
macaddress: fe:35:9c:85:55:00
set-name: eth0
vlans:
eth0.101:
addresses:
- 192.168.2.10/24
id: 101
link: eth0
macaddress: fe:35:9c:85:55:ee
## If you're running on a openstack system, you can actually take
## this a step further and replace the system networking with the
## newly generated config, reboot and see the vlan come up.
## You'll need to update the 'mac_address' for eth0 in net-config.yaml
## to match your system, then re-run the net-convert and update the
## system.
$ sudo cp out.d/etc/network/interfaces /etc/network/interfaces
$ sudo cp out.d/etc/udev/rules.d/70-persistent-net.rules /etc/udev/rules.d/70-persistent-net.rules
## drop the .rules files and update the initramfs
$ sudo rm -f /etc/systemd/network/50-cloud-init-*
$ sudo update-initramfs -u -k all
$ sudo reboot
[Other Info]
Upstream commit at
https://git.launchpad.net/cloud-init/commit/?id=d059d480c3
=== End cloud-init SRU Template ===
----
The expected hwaddresses are as follows:
4: bond0: <BROADCAST,MULTICAST,MASTER,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether a0:36:9f:2d:93:80 brd ff:ff:ff:ff:ff:ff
inet6 fe80::a236:9fff:fe2d:9380/64 scope link
valid_lft forever preferred_lft forever
5: bond0.101@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether a0:36:9f:2d:93:80 brd ff:ff:ff:ff:ff:ff
inet 104.130.20.119/24 brd 104.130.20.255 scope global bond0.101
valid_lft forever preferred_lft forever
inet6 fe80::a236:9fff:fe2d:9380/64 scope link
valid_lft forever preferred_lft forever
6: bond0.401@bond0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default
link/ether a0:36:9f:2d:93:81 brd ff:ff:ff:ff:ff:ff
inet 10.184.7.120/20 brd 10.184.15.255 scope global bond0.401
valid_lft forever preferred_lft forever
inet6 fe80::a236:9fff:fe2d:9381/64 scope link
valid_lft forever preferred_lft forever
however cloud-init shows:
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: ++++++++++++++++++++++++++++++++++++++++Net device info++++++++++++++++++++++++++++++++++++++++
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: +-----------+------+------------------------------+---------------+-------+-------------------+
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | Device | Up | Address | Mask | Scope | Hw-Address |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: +-----------+------+------------------------------+---------------+-------+-------------------+
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0 | True | . | . | . | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0 | True | fe80::a236:9fff:fe2d:9381/64 | . | link | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0.101 | True | 104.130.20.119 | 255.255.255.0 | . | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0.101 | True | fe80::a236:9fff:fe2d:9381/64 | . | link | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | lo | True | 127.0.0.1 | 255.0.0.0 | . | . |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | lo | True | ::1/128 | . | host | . |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0.401 | True | 10.184.7.120 | 255.255.240.0 | . | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | bond0.401 | True | fe80::a236:9fff:fe2d:9381/64 | . | link | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | ens9f1 | True | . | . | . | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: | ens9f0 | True | . | . | . | a0:36:9f:2d:93:81 |
May 12 14:33:28 xnox-iad-nr5 cloud-init[1163]: ci-info: +-----------+------+------------------------------+---------------+-------+-------------------+
Specifically
bond0 | True | fe80::a236:9fff:fe2d:9381/64 | . | link | a0:36:9f:2d:93:81
bond0.101 | True | 104.130.20.119 | 255.255.255.0 | . | a0:36:9f:2d:93:81
Instead of expected a0:36:9f:2d:93:80
The generated netplan.yaml does not set macaddress on the vlans at
all.
Where as the network_data.json does explicitely specifies the mac
address to be in use for those vlans:
"vlan_mac_address" : "a0:36:9f:2d:93:80"
To manage notifications about this bug go to:
https://bugs.launchpad.net/cloud-init/+bug/1690388/+subscriptions