DigitalOcean DS defines mutliple gateways via meta-data
Affects | Status | Importance | Assigned to | Milestone | |
---|---|---|---|---|---|
cloud-init |
Fix Released
|
Medium
|
Unassigned | ||
cloud-init (Ubuntu) |
Fix Released
|
Medium
|
Unassigned | ||
Xenial |
Fix Released
|
Medium
|
Unassigned | ||
Yakkety |
Fix Released
|
Medium
|
Unassigned | ||
Zesty |
Fix Released
|
Medium
|
Unassigned |
Bug Description
[Impact]
The cloud-init datasource for DigitalOcean allows for multiple gateways on any NIC.
On Ubuntu 16.04, this breaks networking.service. For 17.04 and later, Ubuntu _replaces_ the default gateway with the second gateway on 'ifup' after reboot.
DigitalOcean is looking at changing the meta-data, however, this will result in another version of the meta-data JSON.
[Regression Potential]
Low. This change is scope to DigitalOcean only. DigitalOcean has tested this Datasource exhaustively.
[TEST Cases]
- provision on DigitalOcean with a private IP
- reboot
- confirm that a single route exists in /etc/network/
[LOGS]
-------
From /var/log/
2017-04-10 17:36:11,608 - util.py[DEBUG]: Running command ['ip', 'link', 'set', 'ens3', 'down'] with allowed return codes [0] (shell=False, capture=True)
2017-04-10 17:36:11,615 - util.py[DEBUG]: Running command ['ip', 'link', 'set', 'ens3', 'name', 'eth0'] with allowed return codes [0] (shell=False, capture=True)
2017-04-10 17:36:11,635 - util.py[DEBUG]: Running command ['ip', 'link', 'set', 'ens4', 'name', 'eth1'] with allowed return codes [0] (shell=False, capture=True)
2017-04-10 17:36:11,651 - util.py[DEBUG]: Running command ['ip', 'link', 'set', 'eth0', 'up'] with allowed return codes [0] (shell=False, capture=True)
2017-04-10 17:36:11,654 - stages.py[INFO]: Applying network configuration from ds bringup=False: {'version': 1, 'config': [{'name': 'eth0', 'subnets': [{'address': '138.197.88.85', 'netmask': '255.255.240.0', 'gateway': '138.197.80.1', 'type': 'static', 'control': 'auto'}, {'address': '2604:A880:
2017-04-10 17:36:11,668 - util.py[DEBUG]: Writing to /etc/network/
2017-04-10 17:36:11,669 - main.py[DEBUG]: [local] Exiting. datasource DataSourceDigit
2017-04-10 17:36:11,674 - util.py[DEBUG]: Reading from /proc/uptime (quiet=False)
-------
From 'dmesg':
Apr 10 17:36:11 ubuntu systemd[1]: Started Initial cloud-init job (pre-networking).
Apr 10 17:36:12 ubuntu systemd[1]: Started LSB: AppArmor initialization.
Apr 10 17:36:12 ubuntu systemd[1]: Reached target Network (Pre).
Apr 10 17:36:12 ubuntu systemd[1]: Starting Raise network interfaces...
Apr 10 17:36:13 ubuntu ifup[1099]: Waiting for DAD... Done
Apr 10 17:36:13 ubuntu ifup[1099]: RTNETLINK answers: File exists
Apr 10 17:36:13 ubuntu ifup[1099]: Failed to bring up eth1.
-------
$ sudo journalctl -xe -u networking
Apr 10 17:36:12 ubuntu systemd[1]: Starting Raise network interfaces...
-- Subject: Unit networking.service has begun start-up
-- Defined-By: systemd
-- Support: http://
--
-- Unit networking.service has begun starting up.
Apr 10 17:36:13 ubuntu ifup[1099]: Waiting for DAD... Done
Apr 10 17:36:13 ubuntu ifup[1099]: RTNETLINK answers: File exists
Apr 10 17:36:13 ubuntu ifup[1099]: Failed to bring up eth1.
Apr 10 17:36:13 ubuntu systemd[1]: networking.service: Main process exited, code=exited, status=1/FAILURE
Apr 10 17:36:13 ubuntu systemd[1]: Failed to start Raise network interfaces.
-- Subject: Unit networking.service has failed
-- Defined-By: systemd
-- Support: http://
--
-- Unit networking.service has failed.
--
Related branches
- Server Team CI bot: Approve (continuous-integration)
- Scott Moser: Needs Fixing
-
Diff: 56 lines (+26/-1)2 files modifiedcloudinit/sources/helpers/digitalocean.py (+1/-1)
tests/unittests/test_datasource/test_digitalocean.py (+25/-0)
affects: | cloud-init → cloud-init (Ubuntu) |
summary: |
- networking.service fails on ifup due to new rendering of 50-cloud- - init.cfg + networking.service fails on ifup if networking configured via cloud-init |
summary: |
- networking.service fails on ifup if networking configured via cloud-init + DigitalOcean DS defines mutliple gateways via meta-data |
description: | updated |
description: | updated |
Changed in cloud-init (Ubuntu): | |
status: | Incomplete → Confirmed |
description: | updated |
Changed in cloud-init: | |
importance: | Undecided → Medium |
status: | New → Confirmed |
Changed in cloud-init (Ubuntu): | |
importance: | Undecided → Medium |
Changed in cloud-init: | |
status: | Confirmed → Fix Committed |
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 Xenial): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu Yakkety): | |
importance: | Undecided → Medium |
Changed in cloud-init (Ubuntu Zesty): | |
importance: | Undecided → Medium |
Status changed to 'Confirmed' because the bug affects multiple users.