I yaml’d my network: netplan and the new world order
[Put on your peril-sensitive sunglasses. If you are expecting a high-level blog post here, this is not for you :]
I have a relatively complex home network, and was feeling pretty proud of myself for moving the config to upstart (/etc/network/interfaces.d/*) from /etc/rc.local.
And then a wild NetworkManager appeared. And after some trial and error, I managed to... well I gave up and let it stay in upstart, telling NetworkManager to ignore those interfaces with per-route MTU's.
And then a wild systemd-networkd appeared. And I ignored it. Because who in their right mind would write a bunch of /etc/systemd/systemd/*service files for each thing? I would never get an upgrade to work or remember. Why can't the network config just be in one spot like upstart?
And then suddenly, netplan. Maybe my prayers are answered, I can have networkd and 1-shot config in this shiny-new YAML format. Right? I mean, what does it say about software if someone has to develop new software to configure it? I've gone from a couple of IP/mask/mtu, to a dozen files in different directories, even I couldn't keep it straight, so netplan to the rescue right?
Well, several failed boot (and remembering to use "systemd.unit=emergency.target" to grub to resolve, I mean, that's easy right?), I'm back, and editing my yaml file.
edit/netplan generate/netplan apply.
So, what pops out?
Sigh. Progress. Get off my lawn!
So i kept the yaml from netplan, and let it drive the networkd, but I added this 'hack' cuz, well, how else?
# # I cannot figure out how to do this w/ netplan # it seems you cannot set the mtu of a vlan # and you cannot set the mtu of a route # --dab [Unit] Description=Set mtu on device After=network.target [Service] Type=oneshot ExecStart=/sbin/ip link set dev eno1 up mtu 9000 ExecStart=/sbin/ip link set dev eno1.3 up mtu 9000 ExecStart=/sbin/ip r c 172.16.0.0/24 dev eno1 mtu 1500 ExecStart=/sbin/ip r c default via 172.16.0.1 mtu 1500 [Install] WantedBy=multi-user.target