10

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?

2
  • network-config generates 50-cloud-init.cfg. and cloud-init ( cloudinit.readthedocs.io/en/latest ) triggers network-config ( cloudinit.readthedocs.io/en/latest/topics/network-config.html ). That happens on initial creation, and on restarting but only when your force it.
    – Rinzwind
    May 23, 2018 at 14:00
  • I don't have any files named 50-cloud-init.cfg -- I have 50-curtin-networking.cfg and 50-cloud-init-yaml. Did you mean the former? If so, how exactly do you "force" cloud-init to regenerate 50-cloud-init.yaml from 50-curtin-networking.cfg? May 23, 2018 at 15:18

4 Answers 4

4

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

2
  • 3
    You don't want to call cloud-init clean unless you're setting this machine up to be a cloud image. cloud-init is designed to run the first time you boot a machine (eg when deploying a new VM).
    – dmuir
    Feb 8, 2019 at 5:53
  • Yes, I ran cloud-init and it re-initialized SSH keys on my existing server.
    – Mitar
    Aug 22, 2021 at 9:52
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.

8
  • It seems like you're suggesting that the text at the top of 50-cloud-init.yaml, warning against editing it manually, should be ignored :-) This may end up being the approach taken, but I'd ideally like to understand why that text is there in the first place. Presumably the designers had some workflow in mind when they created that process. And what about /etc/cloud/cloud.cfg.d/50-curtin-networking.cfg? May 14, 2018 at 21:01
  • I've renamed the question to hopefully make it clearer. May 14, 2018 at 21:16
  • Is this a cloud instance?
    – chili555
    May 14, 2018 at 21:16
  • No, it is not a cloud instance. It is a standalone server on an internal network. May 15, 2018 at 12:20
  • That's what I meant above when I said, "I assume this is an ordinary server, ..." Please check here: blog.printk.io/2018/04/… I still think 01-netcfg.yaml is appropriate.
    – chili555
    May 15, 2018 at 13:03
0

I ended up editing the /etc/systemd/resolved.conf file and removed the comment on the DNS= line and added my preferred DNS entries with a space separating entries I.E.: DNS = 8.8.8.8 8.8.4.4

0

For me in Ubuntu 19.04 cloud-init init doesn't write 50-curtin-networking.cfg to 50-cloud-init.yaml unless you ask systemctl to restart the cloud-init-local service ...

cloud-init clean
systemctl restart cloud-init-local.service
netplan apply

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .