Proxmox has come a long way since 2008, and the amount that can be configured in the frontend is quite staggering, but sometimes you long for the good old days and want to drop into the terminal. It's just Debian, after all... Hello? Where's everyone gone? Ok, fine, let's start with changing the IP through the web UI:
Changing the IP through the Web UI
There are two changes to make. First, go to System > Network, choose the 'Linux Bridge' interface and click Edit. Enter the new IP here and click OK.
Now click 'Apply Configuration' and the system will reload the network configuration.
Now go to System > Hosts, change the IP address on the line with the hostname and click Save.
Changing the IP with a One-Liner
TL;DR: here's a one-liner:sed -i 's/oldip/newip/g' /etc/network/interfaces /etc/hosts && systemctl restart networking
The above UI changes are essentially just updating these files:
/etc/network/interfaces
- This updates the actual NIC/interface address/etc/hosts
- If a server hostname is in the hosts file, a system won't perform a DNS lookup for that address. Therefore, host/IP pairings in the hosts file need to be correct.
While you could edit both files manually, change the old IP to the new IP, that's just not as fun as using a one-liner to do it for you! In this example, 192.168.10.177 is the old IP and 192.168.10.10 is the new IP:
# The first command will show you the proposed changes
# without editing any files:
root@prox:~# sed 's/192.168.10.177/192.168.10.10/g' /etc/network/interfaces /etc/hosts
auto lo
iface lo inet loopback
iface enp3s0 inet manual
auto vmbr0
iface vmbr0 inet static
address 192.168.10.10/24
gateway 192.168.10.1
bridge-ports enp3s0
bridge-stp off
bridge-fd 0
iface wlp2s0 inet manual
127.0.0.1 localhost.localdomain localhost
192.168.10.10 delta.local delta
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts
___________________________________________________________________
# Adding -i will edit the file in place:
root@prox:~# sed -i 's/192.168.10.177/192.168.10.10/g' /etc/network/interfaces /etc/hosts
root@prox:~# systemctl restart networking
### One-liner ###
root@prox :~# sed -i 's/192.168.10.177/192.168.10.10/g' /etc/network/interfaces /etc/hosts && systemctl restart networking
If you can do it with a one-liner, I'm certainly going to try. Hopefully, this helps you, but if you think I've missed something, please leave a comment or let me know over at @techbitsio.