What is the most authoritative file/process for managing IP addresses on an 18.04 server?

The 18.04 server installation process creates /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg, which, in turn, seems to generate /etc/netplan/50-cloud-init.yaml. I can't seem to find exactly how 50-cloud-init.yaml gets generated from 50-curtin-networking.cfg though.

What is the recommended way to manage IP addresses on an 18.04 server? Edit 50-curtin-networking.cfg, and then run some command (?) to update 50-cloud-init.yaml? Or some other process?


Solution 1:

Make your networking changes to the /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg file as if you were putting them in the yaml file.

Then do the following:

sudo cloud-init clean
sudo cloud-init init
sudo netplan apply

This will process your 50-curtin-networking.cfg file, generate the 50-cloud-init.yaml file and apply the yaml file netplan configuration.

In this way, you can write your networking config in the 50-curtin-networking.cfg file as the comments imply you should do.

A lot of the confusion between setting networking up in the 50-cloud-init.yaml file vs the 01-netcfg.yaml found in the /etc/netplan directory comes down to the installer used for Ubuntu 18.04 LTS.

The live installer uses cloud-init, whereas the alternate installer does not.

So for networking your installer choice changes how you will set up networking.

ubuntu-18.04.1-server-amd64.iso -> 01-netcfg.yaml ubuntu-18.04.1-live-server-amd64.iso -> 50-curtin-networking.cfg

Solution 2:

I assume this is an ordinary server, behind a router or switch that then connects to the internet. I'd rename the 50-cloud-init.yaml file:

sudo mv /etc/netplan/50-cloud-init.yaml  /etc/netplan/01-netcfg.yaml 

Then find out the relevant interface name:

ifconfig 

Assuming, for an example, that your relevant interface is enp0s25, edit the file:

sudo nano /etc/netplan/01-netcfg.yaml 

Amend the file to read:

network:
  version: 2
  renderer: networkd
  ethernets:
    enp0s25:
      addresses: [192.168.100.40/22]
      gateway4: 192.168.100.1
      nameservers:
        addresses: [8.8.8.8,8.8.4.4]

Of course, substitute your exact details here. Spacing, indentation, etc. are crucial. Proofread carefully. Save (Ctrl+O followed by Enter) and close (Ctrl+X) the text editor.

Next:

sudo netplan apply
sudo ip link set enp0s25 down
sudo ip link set enp0s25 up

Did you get the requested IP address?

ip addr show

Can you ping?

ping -c3 8.8.8.8
ping -c3 www.ubuntu.com

If you get ping returns, you are all set.