diff options
author | Lubomir Rintel <lkundrak@v3.sk> | 2022-02-25 23:33:20 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2022-02-25 16:33:20 -0600 |
commit | feda344e6cf9d37b09bc13cf333a717d1654c26c (patch) | |
tree | c1720b2b7adf388a58347acb4ab32fc826bb786a /cloudinit/cmd | |
parent | 5c297cffa09f251ea1296d528b81fda678cc2a03 (diff) | |
download | cloud-init-git-feda344e6cf9d37b09bc13cf333a717d1654c26c.tar.gz |
Add native NetworkManager support (#1224)
Fedora currently relies on sysconfig/ifcfg renderer. This is not too great,
because Fedora (also RHEL since version 8) dropped support for the legacy
network service that uses ifcfg files long ago.
In turn, Fedora ended up patching cloud-init downstream to utilize
NetworkManager's ifcfg compatibility mode [1]. This seems to have worked
for a while, nevertheless the NetworkManager's ifcfg backend is reaching
the end of its useful life too [2].
[1] https://src.fedoraproject.org/rpms/cloud-init/blob/rawhide/f/cloud-init-21.3-nm-controlled.patch
[2] https://fedoraproject.org/wiki/Changes/NoIfcfgFiles
Let's not mangle things downstream and make vanilla cloud-init work great
on Fedora instead.
This also means that the sysconfig compatibility with
Network Manager was removed.
Firstly, this relies upon the fact that you can get ifcfg support by adding
it to NetworkManager.conf. That is not guaranteed and certainly will not
be case in future.
Secondly, cloud-init always generates configuration with
NM_CONTROLLED=no, so the generated ifcfg files are no good for
NetworkManager. Fedora patches around this by just removing those lines
in their cloud-init package.
Diffstat (limited to 'cloudinit/cmd')
-rwxr-xr-x | cloudinit/cmd/devel/net_convert.py | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/cloudinit/cmd/devel/net_convert.py b/cloudinit/cmd/devel/net_convert.py index 18b1e7ff..647fe07b 100755 --- a/cloudinit/cmd/devel/net_convert.py +++ b/cloudinit/cmd/devel/net_convert.py @@ -7,7 +7,14 @@ import os import sys from cloudinit import distros, log, safeyaml -from cloudinit.net import eni, netplan, network_state, networkd, sysconfig +from cloudinit.net import ( + eni, + netplan, + network_manager, + network_state, + networkd, + sysconfig, +) from cloudinit.sources import DataSourceAzure as azure from cloudinit.sources import DataSourceOVF as ovf from cloudinit.sources.helpers import openstack @@ -74,7 +81,7 @@ def get_parser(parser=None): parser.add_argument( "-O", "--output-kind", - choices=["eni", "netplan", "networkd", "sysconfig"], + choices=["eni", "netplan", "networkd", "sysconfig", "network-manager"], required=True, help="The network config format to emit", ) @@ -148,6 +155,9 @@ def handle_args(name, args): elif args.output_kind == "sysconfig": r_cls = sysconfig.Renderer config = distro.renderer_configs.get("sysconfig") + elif args.output_kind == "network-manager": + r_cls = network_manager.Renderer + config = distro.renderer_configs.get("network-manager") else: raise RuntimeError("Invalid output_kind") |