Netplan

Differences between revisions 15 and 16
Revision 15 as of 2018-03-27 20:30:22
Size: 6867
Editor: vorlon
Comment:
Revision 16 as of 2018-04-06 18:21:28
Size: 36
Editor: dpb
Comment:
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
||<tablestyle="float:right; font-size: 0.9em; width:40%; background:#F1F1ED; margin: 0 0 1em 1em;" style="padding:0.5em;"><<TableOfContents(2)>>||

= What is it =

Netplan is a YAML network configuration abstraction for various backends (NetworkManager, networkd).

It is a utility for easily configuring networking on a system. It can be used by writing a YAML description of the required network interfaces with what they should be configured to do. From this description it will generate the required configuration for a chosen renderer tool.

Netplan reads network configuration from /etc/netplan/*.yaml which are written by administrators, installers, cloud image instantiations, or other OS deployments. During early boot it then generates backend specific configuration files in /run to hand off control of devices to a particular networking daemon.

== Supported renderers ==

 * NetworkManager
 * systemd-networkd

The default renderer, if otherwise unspecified, is '''systemd-networkd'''.

= How do I use it? =

== Commands ==

Netplan uses a set of subcommands to drive its behavior:

 * '''netplan generate''': Use /etc/netplan to generate the required configuration for the renderers.
 * '''netplan apply''': Apply all configuration for the renderers, restarting them as necessary.
 * '''netplan ifupdown-migrate''': Attempt to generate an equivalent configuration to what is specified in /etc/network/interfaces.

== Configuration ==

Obviously, without configuration, netplan will not do anything. The most useful configuration snippet (to bring up things via dhcp) is as follows:

{{{
network:
  version: 2
  renderer: NetworkManager
}}}

This will make NetworkManager manage all devices (and by default, any ethernet device will come up with DHCP once carrier is detected).

Using networkd as a renderer does not let devices automatically come up using DHCP; each interface needs to be specified in a file in /etc/netplan for its configuration to be written and for it to be used in networkd.

= Getting help =

== Frequently-asked questions ==

=== How do I bring interfaces up or down? ===

While we recommend that people do not change the state of network interfaces without a good reason and simply let the renderer configured in netplan handle the network interfaces it is meant to configure, you can always modify interface settings manually via the '''ip''' command.

To bring up an interface:

{{{ip link set eth0 up}}}

To bring and interface down:

{{{ip link set eth0 down}}}

See '''man ip''' for more information on how you can manipulate the state of network interfaces.

=== How can I look up the currently applied addresses for my system? ===

Netplan is only meant to ''translate'' configuration into the appropriate files for the backend you want to use. It does not display IP information by itself, since it does not manage those by itself.

You can always get the most accurate state of the IP addresses for your system using the '''ip addr''' command.


=== How do I configure a single interface with netplan so it works now and at next boot? ===

To achieve this you must write a simple netplan configuration file, such as this:

{{{
network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            dhcp4: true
}}}

Then save this to a file under '''/etc/netplan''' with a .yaml extension.

Finally, run {{{netplan apply}}}. This will enable DHCP on the eth0 interface, and immediately attempt to get a new IP address for it. Since the file is written to disk, the same rule will be applied at boot time.

To configure the interface for a static IP address, you could instead use:

{{{
network:
    version: 2
    renderer: networkd
    ethernets:
        eth0:
            addresses:
                - 10.10.10.2/24
            dhcp4: no
}}}

Simply write under ''addresses'' the IP address (IPv4 or IPv6) you want assigned to the interface, along with its prefix length. On many networks, ''/24'' is the prefix length you want.

=== How do I unconfigure a single interface with netplan so it stops and remains unconfigured at next boot? ===

Simply remove the configuration for it. If the interface is not configured in a .yaml file in '''/etc/netplan''', it will not be configured at boot.

To retain connectivity while you configure interfaces, IP addresses are not removed from interfaces when you run '''netplan apply'''. To remove addresses manually, you can use {{{ip address del <address> dev <interface>}}}.

=== How can I add pre-up, post-up, etc. hook scripts? ===

While the netplan configuration does not include support for hook scripts, you can add systemd unit jobs with the appropriate Requires: and After: fields to run arbitrary commands once the network is up.

The same is possible with NetworkManager by writing a script watching for the right event in /etc/NetworkManager/dispatcher.d. See the NetworkManager(8) manpage for details.

=== I currently use Openvswitch ifupdown declarations and would like to replicate this on 18.04, how can I do that? ===

Openvswitch support requires the use of hook scripts. You would need to write a systemd unit that runs '''ovs_vsctl''' correctly for your particular setup.

{{{
#example systemd unit
}}}


=== I really do need ifupdown, can I still use it? ===

If you run into a case where you do need to use ifupdown instead of netplan, we would really like to know about it, so you should [[http://bugs.launchpad.net/ubuntu/+source/nplan/+filebug|file a bug in Launchpad]].

While we don't recommend doing so, you can remove netplan and install ifupdown after install, and fill in /etc/network/interfaces manually to configure your network the way you want it.

You can also opt to use ifupdown instead of netplan at installation by ''preseeding'' '''netcfg/do_not_use_netplan=true''' (adding it the the command-line when you boot the Ubuntu Server installation media, in grub (when you see the menu hit "e" to edit; or in the bootsplash by hitting F6). This will fallback to installing ifupdown and configuring it for the network devices set up during the installation.


== Documentation ==

Help for netplan is always available on Ubuntu systems through the {{{man 5 netplan}}} command.

Online documentation can be found at [[https://netplan.io]]

== IRC ==

Netplan developers are reachable on IRC on the Freenode network, in the channel '''#netplan'''.

= How can I contribute? =

Netplan is developed using git on Launchpad, and uses merge proposals.

You can find the source code here: https://code.launchpad.net/netplan

The main Launchpad project page is here: https://launchpad.net/netplan

We try to stick to an agreed-upon design document; see [[Netplan/Design|Netplan Design]]
Please see: [[https://netplan.io]]

Please see: https://netplan.io

Netplan (last edited 2018-04-06 18:21:28 by dpb)