← Back to team overview

yahoo-eng-team team mailing list archive

[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