Re: NetworkManager keyfile instead of ifcfg-rh - Fedora 33 System-Wide Change proposal

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Monday, June 29, 2020 9:40:23 AM MST Ben Cotton wrote:
> https://fedoraproject.org/wiki/Changes/NetworkManager_keyfile_instead_of_ifc
> fg_rh
 
> == Summary ==
> Change the default settings plugin of NetworkManager so that new
> profiles will be created in keyfile format instead of ifcfg-rh format.
> 
> == Owner ==
> * Name: [[User:Thaller| Thomas Haller]]
> * Email: <thaller@xxxxxxxxxx>
> 
> == Detailed Description ==
> NetworkManager supports settings plugins to persist connection
> profiles to disk. There is the native ''keyfile'' format and the
> Fedora/RHEL specific ''ifcfg-rh'' format originally from initscripts.
> The keyfile plugin is always enabled in NetworkManager and can handle
> any supported type of profile. It stores profiles under
> `/{etc,usr/lib,run}/NetworkManager/system-connections` and is
> documented in
> [https://developer.gnome.org/NetworkManager/stable/nm-settings-keyfile.html
> 
 nm-settings-keyfile manual]. The ifcfg-rh format is in part compatible
> with the network-scripts package from initscripts, however both
> network-scripts and NetworkManager define their own extensions
> ([https://developer.gnome.org/NetworkManager/stable/nm-settings-ifcfg-rh.htm
> l
 [1]]). Since network-scripts and NetworkManager are fundamentally
> different, the same ifcfg file is not treated exactly the same by both
> systems. In the past, having the ifcfg-rh format made it easier for users
> familiar with initscripts to migrate to/from NetworkManager. 
> The settings plugins are configurable in
> [https://developer.gnome.org/NetworkManager/stable/NetworkManager.conf.html
> NetworkManager.conf] via the `"main.plugins"` option. Multiple plugins can
> be configured and on Fedora 32 and older, the compile time default for the
> option is `"ifcfg-rh,keyfile"`. This means, that when
> NetworkManager stores a new profile to disk, it will first try to
> persist it in ifcfg-rh format before falling back to keyfile format,
> if the ifcfg-rh plugin doesn't support the profile type. When reading
> profiles from disk, NetworkManager will read and expose profiles from
> both settings plugins and when modifying an existing profile, it will
> update the existing file and preserve the settings plugin.
> 
> This Change is about to change the default for `"main.plugins"` from
> `"ifcfg-rh,keyfile"` to `"keyfile,ifcfg-rh"`.
> 
> == Feedback ==
> This was brought up on the NetworkManager mailing list
> ([https://mail.gnome.org/archives/networkmanager-list/2020-May/msg00002.html
> 
 [1]]]).
> 
> Fedora CoreOS doesn't use ifcfg-rh files at all, only keyfile. Also,
> RHEL CoreOS uses the `"main.plugins=ifcfg-rh,keyfile"` configuration
> too. For CoreOS this of course is simpler, because they don't deal
> with existing user configurations and tools that would break during
> upgrade.
> 
> == Benefit to Fedora ==
> The long term goal of NetworkManager is to move away from ifcfg-rh
> files. That will be difficult as it affects existing installations and
> will require migration of existing configurations. This change is only
> a first step and affects how NetworkManager by default persists new
> profiles to disk.
> 
> The ifcfg-rh format arguably has an uglier syntax and, contrary to
> keyfile, does not support all profile types. Also, keyfile plugin is
> available on every NetworkManager installation because that is the
> only plugin that supports all profiles. Having multiple plugins and
> file formats is confusing. By now, initscripts' `network-script`
> package is deprecated in Fedora and upstream wants to move away from
> that format in the long term. Also maintaining multiple settings
> plugins is a maintainance burden, and in the past there were subtle
> bugs where ifcfg-rh did not implement all settings (e.g.
> [https://bugzilla.redhat.com/show_bug.cgi?id=CVE-2020-10754
> CVE-2020-10754]). On other Linux distributions NetworkManager uses the
> keyfile format by default. It is a general goal that NetworkManager
> works similar on all distributions.
> 
> == Scope ==
> 
> * Proposal owners: The default settings for `"main.plugins"` can
> already be selected at compile time. This only requires building the
> package with a different default
> ([https://src.fedoraproject.org/rpms/NetworkManager/blob/a06b38bcbe8f9a38bad
> ab4f37e8c6fae240428b7/f/NetworkManager.spec#_759
 [3]]).
> * Other developers: N/A (not needed for this Change)
> * Policies and guidelines: N/A (not needed for this Change)
> * Trademark approval: N/A (not needed for this Change)
> 
> == Upgrade/compatibility impact ==
> This affects most users, unless they explicitly set the option in
> NetworkManager.conf configuration. The biggest effect of this change
> is that new profiles will now preferably be persisted in keyfile
> format. This changes behavior for users who expect NetworkManager to
> write ifcfg-rh files, or who have scripts or tools that expect that.
> What will still work is that existing ifcfg files are loaded after
> upgrade. Users who only use the D-Bus API (via one of the client
> applications like nmcli or the GUI), shouldn't notice the difference.
> 
> As before, users still can explicitly configure the settings plugins
> in NetworkManager.conf. This only affects the default, but it affects
> existing installations if the user didn't explicitly configure
> NetworkManager's `"main.plugins"` option.
> 
> The Change will be implemented by changing the compile time default,
> instead of dropping a configuration snippet. The reason is that it is
> preferably that the installation of NetworkManager avoids extra
> configuration. The default behavior should be achived without any
> configuration. During package update there would be the possibility to
> drop a file `/etc/NetworkManager/02-update-plugins-ifcfg-rh.conf` that
> preserves the previous behavior. However, I don't think that is
> necessary. After upgrading NetworkManager, it will still read ifcfg-rh
> file so for the user it is less necessary to preserve the previous
> behavior. Also, dropping configuration snippets during package upgrade
> has its own downsides because new installations behave different than
> upgraded systems.
> 
> 
> == How To Test ==
> You can already test the effect by explicitly configuring the setting
> which will become the default. For example, add a file
> `/etc/NetworkManager/conf.d/99-main-plugins.conf` with content
> 
>   [main]
>   plugins=keyfile,ifcfg-rh
> 
> == User Experience ==
> NetworkManager now preferably uses the keyfile format (INI files).
> This format is probably easier to understand to users and also has a
> closer resemblance to how the profile is presented in nmcli.
> 
> If the user is using NetworkManager tools that use the D-Bus API (like
> nmcli or the GUI), then the used storage plugin and format is usually
> of no concern for the user.
> 
> == Dependencies ==
> None
> 
> 
> == Contingency Plan ==
> The `"main.plugins"` option exists for a long time in NetworkManager.
> All that changes here is the default of this option.
> 
> * Contingency mechanism: revert the change
> * Contingency deadline: beta freeze
> * Blocks release? No
> 
> == Documentation ==
> I am not aware of documentation that gets affected by this.
> 
> 
> == Release Notes ==
> NetworkManager now prefers the keyfile settings plugin over ifcfg-rh
> plugin when writing new connection profiles to disk. Existing ifcfg-rh
> files are still handled as before.

If there's a benefit to this, beyond being more in line with Fedora 
experiments such as CoreOS, I'm all for it. As long as I users can continue to 
specify their network configuration in ifcfg-rh format files, I can't imagine 
anyone will have issues with this Change. :)

-- 
John M. Harris, Jr.

_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx
Fedora Code of Conduct: https://docs.fedoraproject.org/en-US/project/code-of-conduct/
List Guidelines: https://fedoraproject.org/wiki/Mailing_list_guidelines
List Archives: https://lists.fedoraproject.org/archives/list/devel@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Users]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]

  Powered by Linux