I've installed Ubuntu Server 18.04, and instead of the old /etc/network/interfaces
, it seems that my network configuration now lives in a series of YAML files in /etc/netplan
, of which the only one I actually have is /etc/netplan/50-cloud-init.yaml
:
# This file is generated from information provided by
# the datasource. Changes to it will not persist across an instance.
# To disable cloud-init's network configuration capabilities, write a file
# /etc/cloud/cloud.cfg.d/99-disable-network-config.cfg with the following:
# network: {config: disabled}
network:
ethernets:
ens3:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
ens4:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
version: 2
That seems to have been generated by cloud-init
, from /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg
:
network:
ethernets:
ens3:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
ens4:
addresses: []
dhcp4: true
dhcp6: true
nameservers: {}
optional: true
version: 2
What's the right way to edit this configuration and apply the changes to the running machine? The comment in the Netplan file suggested to me that it's ephemeral and generated on reboot by cloud-init
, so I should edit cloud-init
's config. But even after editing it and rebooting, I don't see any changes to the Netplan file, and I definitely don't know how to apply the cloud-init
config changes manually. And upon reading the comment again, now it seems to me that it's talking about changes not persisting across destruction and recreation of the machine, which would seem to go without saying. So clearly I'm misunderstanding something.
So my question is:
Where in the new
cloud-init
/netplan
system am I supposed to be putting manual network configuration?How do I apply changes I make in
/etc/netplan
?How do I apply changes I make in
/etc/cloud/cloud.cfg.d
?
It seems the trick to getting the yaml to generate from the cfg is...
Next problem is how to get that cfg set from the seed.iso or nocloud-net meta-data
the r flag is the same as any reboot
shutdown -r now
If you run
cloud-init init
(without rebooting) there is not visible change to /etc/netplan/50-cloud-init.yamlSo still not clear on how to trigger that without the reboot? I've tried
cloud-init init
and thensystemctl restart cloud-init
I have also tried
cloud-init -d modules --mode config
andcloud-init -d modules --mode final
Okay wait I think I found it...
it seems to rebuild the netplan yaml from the cloud cfg after you
cloud-init clean
runningcloud-init init
does not do it. [Ubuntu 19.04 cloud-init 19][too many moving parts in this design]
Note: I have found an improvement which brings further clarity both these commands achieve the desired result.
First, you backup the current
/etc/netplan/*.yaml
file to something like/etc/netplan/*.yaml.BAK
.Then you make any changes you desire to
/etc/netplan/*.yaml
. Indentation and spacing and no tabs, are VERY important when creating/editing a .yaml file.FYI: your existing .yaml files should start with:
Then:
sudo netplan --debug generate
# generate config filessudo netplan apply
# apply to the current systemreboot
# to confirm proper operationFor further examples and configuration guidelines see https://netplan.io/examples