summaryrefslogtreecommitdiff
path: root/cloudinit/distros
diff options
context:
space:
mode:
authorRyan Harper <ryan.harper@canonical.com>2017-03-19 08:39:01 -0500
committerScott Moser <smoser@brickies.net>2017-03-20 15:59:03 -0400
commitef18b8ac4cf7e3dfd98830fbdb298380a192a0fc (patch)
tree19806d975057906806bd4e62b795e77a7a6af3c4 /cloudinit/distros
parent9040e78feb7c1bcf3a1dab0ee163efaa0d21612c (diff)
downloadvyos-cloud-init-ef18b8ac4cf7e3dfd98830fbdb298380a192a0fc.tar.gz
vyos-cloud-init-ef18b8ac4cf7e3dfd98830fbdb298380a192a0fc.zip
cloudinit.net: add network config v2 parsing and rendering
Network configuration version 2 format is implemented in a package called netplan (nplan)[1] which allows consolidated network config for multiple network controllers. - Add a new netplan renderer - Update default policy, placing eni and sysconfig first This requires explicit policy to enable netplan over eni on systems which have both (Yakkety, Zesty, UC16) - Allow any network state (parsed from any format cloud-init supports) to render to v2 if system supports netplan. - Move eni's _subnet_is_ipv6 to common code for use by other renderers - Make sysconfig renderer always emit /etc/syconfig/network configuration - Update cloud-init.service systemd unit to also wait on systemd-networkd-wait-online.service 1. https://lists.ubuntu.com/archives/ubuntu-devel/2016-July/039464.html
Diffstat (limited to 'cloudinit/distros')
-rw-r--r--cloudinit/distros/debian.py16
1 files changed, 11 insertions, 5 deletions
diff --git a/cloudinit/distros/debian.py b/cloudinit/distros/debian.py
index 1101f02d..3f0f9d53 100644
--- a/cloudinit/distros/debian.py
+++ b/cloudinit/distros/debian.py
@@ -42,11 +42,16 @@ NETWORK_CONF_FN = "/etc/network/interfaces.d/50-cloud-init.cfg"
class Distro(distros.Distro):
hostname_conf_fn = "/etc/hostname"
locale_conf_fn = "/etc/default/locale"
+ network_conf_fn = {
+ "eni": "/etc/network/interfaces.d/50-cloud-init.cfg",
+ "netplan": "/etc/netplan/50-cloud-init.yaml"
+ }
renderer_configs = {
- 'eni': {
- 'eni_path': NETWORK_CONF_FN,
- 'eni_header': ENI_HEADER,
- }
+ "eni": {"eni_path": network_conf_fn["eni"],
+ "eni_header": ENI_HEADER},
+ "netplan": {"netplan_path": network_conf_fn["netplan"],
+ "netplan_header": ENI_HEADER,
+ "postcmds": True}
}
def __init__(self, name, cfg, paths):
@@ -75,7 +80,8 @@ class Distro(distros.Distro):
self.package_command('install', pkgs=pkglist)
def _write_network(self, settings):
- util.write_file(NETWORK_CONF_FN, settings)
+ # this is a legacy method, it will always write eni
+ util.write_file(self.network_conf_fn["eni"], settings)
return ['all']
def _write_network_config(self, netconfig):