What is the most authoritative file/process for managing IP addresses on an 18.04 server?
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.
Related videos on Youtube
kartik_subbarao
Open Systems Technologist, author of Enlightening Technical Leadership: http://kartiksubbarao.com/etl
Updated on September 18, 2022Comments
-
kartik_subbarao over 1 year
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 how50-cloud-init.yaml
gets generated from50-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 update50-cloud-init.yaml
? Or some other process?-
Rinzwind almost 6 years
network-config
generates50-cloud-init.cfg
. andcloud-init
( cloudinit.readthedocs.io/en/latest ) triggersnetwork-config
( cloudinit.readthedocs.io/en/latest/topics/network-config.html ). That happens on initial creation, and on restarting but only when your force it. -
kartik_subbarao almost 6 yearsI don't have any files named
50-cloud-init.cfg
-- I have50-curtin-networking.cfg
and50-cloud-init-yaml
. Did you mean the former? If so, how exactly do you "force" cloud-init to regenerate50-cloud-init.yaml
from50-curtin-networking.cfg
?
-
-
kartik_subbarao almost 6 yearsIt 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?
-
kartik_subbarao almost 6 yearsI've renamed the question to hopefully make it clearer.
-
chili555 almost 6 yearsIs this a cloud instance?
-
kartik_subbarao almost 6 yearsNo, it is not a cloud instance. It is a standalone server on an internal network.
-
chili555 almost 6 yearsThat'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.
-
kartik_subbarao almost 6 yearsI saw this post. Unfortunately, the author has the same uncertainty that I do: While the netplan file warns that it might get overwritten, I was not able to use the cloud-init file to change the netplan network configuration… I am not 100% sure if it is safe to edit the netplan directly in the default configuration. I'm asking here to see if someone (perhaps one of the Ubuntu developers?) has the 100% authoritative answer on this question.
-
Paco Hope over 5 yearsThis answer is a good answer. Ironically the author wrote "Spacing, indentation, etc. are crucial. Proofread carefully." And there's an error in the code. The line "addresses" in the YAML needs to be indented. It is an attribute of nameservers. Thanks for the tip, though, it helped me.
-
chili555 over 5 yearsIronically, @PacoHope the author, hanging his head, made a small edit. Thanks for the heads up.
-
dmuir about 5 yearsYou 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).
-
Alex Isayenko over 4 yearsAwesome. Thanks, man!
-
Mitar over 2 yearsYes, I ran cloud-init and it re-initialized SSH keys on my existing server.