Friday 29 July 2016

Annoucing netplan -- Consolidated YAML network configuration across Ubuntu

Hello all,

The purpose of the new "netplan" project is to unify and clean up
networking configuration in Ubuntu. Currently, Desktop/Server
installers generate ifupdown /etc/network/interfaces,
MaaS/curtin/cloud-init use a YAML based format that gets translated to
/e/n/i, and there is currently no simple way to pre-configure
NetworkManager, and no support for networkd.

With netplan there are central /etc/netplan/*.yaml network config
files for *all* Ubuntu -- Snappy, Server, Client, MaaS, cloud-init.
All installers only generate such a file, no /etc/network/interfaces
any more. This then gives us the flexibility to dynamically select or
switch between different backends -- for example, there is demand for
moving away from ifupdown towards networkd, and some environments
might prefer NetworkManager for everything. netplan translates the
YAML config to the backend specific configuration formats on boot, but
all these are only written to /run -- i. e. they are ephemeral and not
considered primary configuration files in /etc.

This is now available in yakkety as "nplan" package. "netplan" already
exists but is something else entirely -- but as we intend to install
it by default everywhere very soon, the package name does not really
matter.

It currently supports configuring ethernets, wifi (infrastructure,
adhoc, AP), and bridges, which should be the most common device types.
Version 0.4 (just uploaded to yakkety) now also provides documentation
of the configuration as HTML and manpage; the rendered HTML page can
also be seen at [1] for the time being.

Of course a lot of features are still missing (bonds, routes,
nameservers, veth), there is no upgrade handling from /e/n/i yet, and
it does not start networkd automatically (i. e. if you use it you
currently need to "systemctl enable systemd-networkd"). All these are
being tracked as work items in the blueprint[2] and in bug reports [3].

If you are interested in network configuration, or are a
cloud-init/installer/snappy developer etc. who wants to use it, I
appreciate feedback about the YAML format, features, bug reports, etc.
-- for now I reserve the right to break the current YAML format in
incompatible ways, for example if there is a strong desire to change
the structure or rename some properties. This already has been
discussed between Ryan, Scott, Loïc and me for hours though, so
hopefully it won't change dramatically any more ☺

Project page: https://launchpad.net/netplan
Code: git clone https://git.launchpad.net/netplan

Thanks,

Martin

[1] http://people.canonical.com/~pitti/tmp/netplan.html
[2] https://blueprints.launchpad.net/ubuntu/+spec/foundations-y-network-yaml
[3] https://bugs.launchpad.net/ubuntu/+source/nplan

--
Martin Pitt | http://www.piware.de
Ubuntu Developer (www.ubuntu.com) | Debian Developer (www.debian.org)