hostname ddns update is not done on azure with built-in agent path.

Bug #1674685 reported by Scott Moser on 2017-03-21
12
This bug affects 1 person
Affects Status Importance Assigned to Milestone
cloud-init
Medium
Brent Baude
cloud-init (Ubuntu)
Medium
Unassigned
Xenial
Medium
Unassigned
Yakkety
Medium
Unassigned

Bug Description

=== Begin SRU Template ===
[Impact]
The network device on Azure is configured via dhcp. DNS records are
updated for the host with the dhcp's request (dyndns).

Cloud-init has two operation modes on Azure.
a.) builtin: cloud-init does negotiation with the "fabric" (cloud platform)
    directly.
b.) interaction with walinux-agent: cloud-init invokes walinux-agent
    and expects it to do negotiation.

The system's hostname is provided to cloud-init via info on a cdrom.
cloud-init reads that hostname and then updates the system's hostname.
When configured to use walinux-agent, cloud-init would then bounce
the network device to publish this hostname change.

The bug here was that this did not happen in the builtin path, and
as a result systems would not have dns updated for their hostname.

This is not a problem for xenial or yakkety as they use the
walinuxagent path.

[Test Case]
To verify no regression
start an instance on azure
enable proposed, update, upgrade
rm -Rf /var/lib/cloud /var/log/cloud-init*
reboot

[Regression Potential]
Regression risk is very low since this code path is not used in 16.04 or
16.10. The changed code path is only used in 17.04+. Thus the test case
listed above is simple instance boot.

[Other Info]
Upstream commit:
 https://git.launchpad.net/cloud-init/commit/?id=86715c88aab8561

=== End SRU Template ===

Brent Baude and Paul Meyer realized that on Azure, that when the 'agent_command' is set to __builtin__ (the current default in trunk) that cloud-init does not bounce the network device in order to do a ddns update of the systems' hostname.

Related branches

Scott Moser (smoser) on 2017-03-21
Changed in cloud-init:
status: New → Confirmed
importance: Undecided → Medium
assignee: nobody → Brent Baude (bbaude)
Changed in cloud-init (Ubuntu):
importance: Undecided → Medium
status: New → Confirmed
Changed in cloud-init:
status: Confirmed → Fix Committed
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package cloud-init - 0.7.9-77-g4a2b2f87-0ubuntu1

---------------
cloud-init (0.7.9-77-g4a2b2f87-0ubuntu1) zesty; urgency=medium

  * New upstream snapshot.
    - Fix filesystem creation when using "partition: auto" [Jonathan Ballet]
      (LP: #1634678)
    - ConfigDrive: support reading config drive data from /config-drive for
      nova-lxd. (LP: #1673411)
    - ds-identify: fix detection of Bigstep datasource. (LP: #1674766)
    - test: add running of pylint [Joshua Powers]
    - ds-identify: fix bug where filename expansion was left on.
    - advertise network config v2 support (NETWORK_CONFIG_V2) in features.
    - Bigstep: fix bug when executing in python3.
    - Fix unit test when running in a system deployed with cloud-init.
    - Bounce network interface for Azure when using the built-in path.
      [Brent Baude] (LP: #1674685)

 -- Scott Moser <email address hidden> Fri, 24 Mar 2017 16:50:56 -0400

Changed in cloud-init (Ubuntu):
status: Confirmed → Fix Released
Scott Moser (smoser) on 2017-04-04
Changed in cloud-init (Ubuntu Xenial):
status: New → Confirmed
Changed in cloud-init (Ubuntu Yakkety):
status: New → Confirmed
Changed in cloud-init (Ubuntu Xenial):
importance: Undecided → Medium
Changed in cloud-init (Ubuntu Yakkety):
importance: Undecided → Medium
description: updated
Scott Moser (smoser) on 2017-04-06
description: updated
Scott Moser (smoser) on 2017-04-06
description: updated

Hello Scott, or anyone else affected,

Accepted cloud-init into yakkety-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/cloud-init/0.7.9-90-g61eb03fe-0ubuntu1~16.10.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Yakkety):
status: Confirmed → Fix Committed
tags: added: verification-needed
Brian Murray (brian-murray) wrote :

Hello Scott, or anyone else affected,

Accepted cloud-init into xenial-proposed. The package will build now and be available at https://launchpad.net/ubuntu/+source/cloud-init/0.7.9-90-g61eb03fe-0ubuntu1~16.04.1 in a few hours, and then in the -proposed repository.

Please help us by testing this new package. See https://wiki.ubuntu.com/Testing/EnableProposed for documentation on how to enable and use -proposed.Your feedback will aid us getting this update out to other Ubuntu users.

If this package fixes the bug for you, please add a comment to this bug, mentioning the version of the package you tested, and change the tag from verification-needed to verification-done. If it does not fix the bug for you, please add a comment stating that, and change the tag to verification-failed. In either case, details of your testing will help us make a better decision.

Further information regarding the verification process can be found at https://wiki.ubuntu.com/QATeam/PerformingSRUVerification . Thank you in advance!

Changed in cloud-init (Ubuntu Xenial):
status: Confirmed → Fix Committed
Scott Moser (smoser) wrote :
Download full text (3.8 KiB)

# launch an instance on azure of yakkety and of xenial
$ azure vm create --vm-size=Basic_A0 \
    --vm-name=smoser0413y "--location=East US" \
    --<email address hidden> --no-ssh-password --ssh=22 \
    smoser0413y b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-yakkety-16_10-amd64-server-20170412-en-us-30GB smoser

$ azure vm create --vm-size=Basic_A0 \
    --vm-name=smoser0413y "--location=East US" \
    --<email address hidden> --no-ssh-password --ssh=22 \
    smoser0413y b39f27a8b8c64d52b05eac6a62ebad85__Ubuntu_DAILY_BUILD-yakkety-16_10-amd64-server-20170412-en-us-30GB smoser

## on each system
% git clone https://git.launchpad.net/~smoser/cloud-init/+git/sru-info
% sudo ./sru-info/bin/enable-proposed
% sudo apt-get -q update
% sudo apt-get install -qy cloud-init
## this just sets the hostname back to the stock 'ubuntu'
## so the code will think it needs to re-publish it
## as it only publishes if it differs from the existing.
% echo "ubuntu" | sudo tee /etc/hostname
% sudo ./sru-info/bin/do-reboot clean save=orig

# reconnect and verify yakkety
$ cat /etc/cloud/build.info
build_name: server
serial: 20170412

$ dpkg-query --show cloud-init
cloud-init 0.7.9-90-g61eb03fe-0ubuntu1~16.10.1

$ lsb_release -sc
yakkety

$ grep WARN /var/log/cloud-init.log || echo no warn
no warn
$ grep --after-context=7 "pubhname" /var/log/cloud-init.log
2017-04-13 20:52:40,641 - DataSourceAzure.py[DEBUG]: pubhname: publishing hostname [hostname=smoser0413y policy=True interface=eth0]
2017-04-13 20:52:40,648 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2017-04-13 20:52:40,648 - util.py[DEBUG]: Read 11 bytes from /proc/uptime
2017-04-13 20:52:40,649 - util.py[DEBUG]: Running command ['sh', '-xc', 'i=$interface; x=0; ifdown $i || x=$?; ifup $i || x=$?; exit $x'] with allowed return codes [0] (shell=False, capture=False)
2017-04-13 20:52:45,982 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2017-04-13 20:52:45,982 - util.py[DEBUG]: Read 11 bytes from /proc/uptime
2017-04-13 20:52:45,982 - util.py[DEBUG]: publishing hostname took 5.334 seconds (5.34)
2017-04-13 20:52:45,983 - util.py[DEBUG]: Running command ['hostname', 'ubuntu'] with allowed return codes [0] (shell=False, capture=True)

$ cat /run/cloud-init/result.json
{
 "v1": {
  "datasource": "DataSourceAzureNet [seed=/dev/sr0]",
  "errors": []
 }
}

# reconnect and verify xenial
$ dpkg-query --show cloud-init
cloud-init 0.7.9-90-g61eb03fe-0ubuntu1~16.04.1
$ cat /etc/cloud/build.info
build_name: server
serial: 20170412
$ lsb_release -sc
xenial
$ rep WARN /var/log/cloud-init.log || echo no warn
The program 'rep' is currently not installed. You can install it by typing:
sudo apt install rep
no warn
$ ^C
$ grep WARN /var/log/cloud-init.log || echo no warn
no warn
$ grep --after-context=7 "pubhname" /var/log/cloud-init.log
2017-04-13 20:54:51,199 - DataSourceAzure.py[DEBUG]: pubhname: publishing hostname [hostname=smoser0413x policy=True interface=eth0]
2017-04-13 20:54:51,199 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
2017-04-13 20:54:51,199 - util.py[DEBUG]: Read 11 bytes from /proc/uptime
2017-04-13 20:54:51,207 - util....

Read more...

tags: added: verification-done-xenial verification-done-yakkety
removed: verification-needed
Launchpad Janitor (janitor) wrote :
Download full text (3.4 KiB)

This bug was fixed in the package cloud-init - 0.7.9-90-g61eb03fe-0ubuntu1~16.10.1

---------------
cloud-init (0.7.9-90-g61eb03fe-0ubuntu1~16.10.1) yakkety; urgency=medium

  * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460)
  * New upstream snapshot.
    - OpenStack: add 'dvs' to the list of physical link types. (LP: #1674946)
    - Fix bug that resulted in an attempt to rename bonds or vlans.
      (LP: #1669860)
    - tests: update OpenNebula and Digital Ocean to not rely on host
      interfaces.
    - net: in netplan renderer delete known image-builtin content.
      (LP: #1675576)
    - doc: correct grammar in capabilities.rst [David Tagatac]
    - ds-identify: fix detecting of maas datasource. (LP: #1677710)
    - netplan: remove debugging prints, add debug logging [Ryan Harper]
    - ds-identify: do not write None twice to datasource_list.
    - support resizing partition and rootfs on system booted without
      initramfs. [Steve Langasek] (LP: #1677376)
    - apt_configure: run only when needed. (LP: #1675185)
    - OpenStack: identify OpenStack by product 'OpenStack Compute'.
      (LP: #1675349)
    - GCE: Search GCE in ds-identify, consider serial number in check.
      (LP: #1674861)
    - Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325)
    - Fix filesystem creation when using "partition: auto"
      [Jonathan Ballet] (LP: #1634678)
    - ConfigDrive: support reading config drive data from /config-drive.
      (LP: #1673411)
    - ds-identify: fix detection of Bigstep datasource. (LP: #1674766)
    - test: add running of pylint [Joshua Powers]
    - ds-identify: fix bug where filename expansion was left on.
    - advertise network config v2 support (NETWORK_CONFIG_V2) in features.
    - Bigstep: fix bug when executing in python3. [root]
    - Fix unit test when running in a system deployed with cloud-init.
    - Bounce network interface for Azure when using the built-in path.
      [Brent Baude] (LP: #1674685)
    - cloudinit.net: add network config v2 parsing and rendering [Ryan Harper]
    - net: Fix incorrect call to isfile [Joshua Powers] (LP: #1674317)
    - net: add renderers for automatically selecting the renderer.
    - doc: fix config drive doc with regard to unpartitioned disks.
      (LP: #1673818)
    - test: Adding integratiron test for password as list [Joshua Powers]
    - render_network_state: switch arguments around, do not require target
    - support 'loopback' as a device type.
    - Integration Testing: improve testcase subclassing [Wesley Wiedenmeier]
    - gitignore: adding doc/rtd_html [Joshua Powers]
    - doc: add instructions for running integration tests via tox.
      [Joshua Powers]
    - test: avoid differences in 'date' output due to daylight savings.
    - Fix chef config module in omnibus install. [Jeremy Melvin] (LP: #1583837)
    - Add feature flags to cloudinit.version. [Wesley Wiedenmeier]
    - tox: add a citest environment
    - Support chpasswd/list being a list in addition to a string.
      [Sergio Lystopad] (LP: #1665694)
    - doc: Fix configuration example for cc_set_passwords module.
      [Sergio Lystopad] (LP: #1665773)
    - ...

Read more...

Changed in cloud-init (Ubuntu Yakkety):
status: Fix Committed → Fix Released

The verification of the Stable Release Update for cloud-init has completed successfully and the package has now been released to -updates. Subsequently, the Ubuntu Stable Release Updates Team is being unsubscribed and will not receive messages about this bug report. In the event that you encounter a regression using the package from -updates please report a new bug using ubuntu-bug and tag the bug report regression-update so we can easily find any regressions.

Launchpad Janitor (janitor) wrote :
Download full text (3.4 KiB)

This bug was fixed in the package cloud-init - 0.7.9-90-g61eb03fe-0ubuntu1~16.04.1

---------------
cloud-init (0.7.9-90-g61eb03fe-0ubuntu1~16.04.1) xenial-proposed; urgency=medium

  * debian/cloud-init.templates: add Bigstep to list of sources. (LP: #1676460)
  * New upstream snapshot.
    - OpenStack: add 'dvs' to the list of physical link types. (LP: #1674946)
    - Fix bug that resulted in an attempt to rename bonds or vlans.
      (LP: #1669860)
    - tests: update OpenNebula and Digital Ocean to not rely on host
      interfaces.
    - net: in netplan renderer delete known image-builtin content.
      (LP: #1675576)
    - doc: correct grammar in capabilities.rst [David Tagatac]
    - ds-identify: fix detecting of maas datasource. (LP: #1677710)
    - netplan: remove debugging prints, add debug logging [Ryan Harper]
    - ds-identify: do not write None twice to datasource_list.
    - support resizing partition and rootfs on system booted without
      initramfs. [Steve Langasek] (LP: #1677376)
    - apt_configure: run only when needed. (LP: #1675185)
    - OpenStack: identify OpenStack by product 'OpenStack Compute'.
      (LP: #1675349)
    - GCE: Search GCE in ds-identify, consider serial number in check.
      (LP: #1674861)
    - Add support for setting hashed passwords [Tore S. Lonoy] (LP: #1570325)
    - Fix filesystem creation when using "partition: auto"
      [Jonathan Ballet] (LP: #1634678)
    - ConfigDrive: support reading config drive data from /config-drive.
      (LP: #1673411)
    - ds-identify: fix detection of Bigstep datasource. (LP: #1674766)
    - test: add running of pylint [Joshua Powers]
    - ds-identify: fix bug where filename expansion was left on.
    - advertise network config v2 support (NETWORK_CONFIG_V2) in features.
    - Bigstep: fix bug when executing in python3. [root]
    - Fix unit test when running in a system deployed with cloud-init.
    - Bounce network interface for Azure when using the built-in path.
      [Brent Baude] (LP: #1674685)
    - cloudinit.net: add network config v2 parsing and rendering [Ryan Harper]
    - net: Fix incorrect call to isfile [Joshua Powers] (LP: #1674317)
    - net: add renderers for automatically selecting the renderer.
    - doc: fix config drive doc with regard to unpartitioned disks.
      (LP: #1673818)
    - test: Adding integratiron test for password as list [Joshua Powers]
    - render_network_state: switch arguments around, do not require target
    - support 'loopback' as a device type.
    - Integration Testing: improve testcase subclassing [Wesley Wiedenmeier]
    - gitignore: adding doc/rtd_html [Joshua Powers]
    - doc: add instructions for running integration tests via tox.
      [Joshua Powers]
    - test: avoid differences in 'date' output due to daylight savings.
    - Fix chef config module in omnibus install. [Jeremy Melvin] (LP: #1583837)
    - Add feature flags to cloudinit.version. [Wesley Wiedenmeier]
    - tox: add a citest environment
    - Support chpasswd/list being a list in addition to a string.
      [Sergio Lystopad] (LP: #1665694)
    - doc: Fix configuration example for cc_set_passwords module.
      [Sergio Lystopad] (LP: #1665773...

Read more...

Changed in cloud-init (Ubuntu Xenial):
status: Fix Committed → Fix Released

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
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers