This bug is believed to be fixed in cloud-init in 17.1. If this is still
a problem for you, please make a comment and set the state back to New

Thank you.

** Changed in: cloud-init
       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 Released
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

-- 
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

Reply via email to