15

This may be related to running 18.04 LTS as a virtual machine (Host is Win 2016 DC) but I can't figure it out how. I have tried every method of I know of to change the hostname but it always reverts to the hostname I entered when I built the machine on reboot. I have tried the following:

  1. hostnamectl set-hostname xxx.
  2. Editing hostname directly.
  3. Adding --static to hostnamectl.
  4. Editing hosts file and adding desired hostname.
  5. Searching drive for references to old hostname before reboot.
  6. A few other weird suggestions I found on the internet not worth mentioning.

I have no DNS for this server at this time.

Example:

XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
Pretty hostname: Interwrx Ubuntu Mail Server
Transient hostname: ctl
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
  Architecture: x86-64
XXXX@iwrxmail:~# hostnamectl set-hostname test
XXXX@iwrxmail:~# hostnamectl
Static hostname: test
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: e6608fe238d843f883cde52af7631a79
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
  Architecture: x86-64
root@iwrxmail:~# cat /etc/hostname
test
root@iwrxmail:~# cat /etc/hosts
127.0.0.1       localhost.localdomain   localhost
::1             localhost6.localdomain6 localhost6
# The following lines are desirable for IPv6 capable hosts
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
ff02::3 ip6-allhosts 

However on reboot I get this again ....

XXXX@iwrxmail:~# hostnamectl
Static hostname: iwrxmail
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 01ef0d836d2c4945b51a4fab8e506381
       Boot ID: 25a00676b22048eb8d43492c9de4f147
Virtualization: microsoft
Operating System: Ubuntu 18.04 LTS
        Kernel: Linux 4.15.0-20-generic
Architecture: x86-64

I had had this issue with the beta of 18.04, but I figured I would wait for the release copy. I also considered it might be a problem with the fact I had cloned the VMs, but this was a brand new version built from scratch with the just released distro.

What am I missing?

Thanks in advance.

22

First edit /etc/cloud/cloud.cfg and set the parameter "preserve_hostname" from "false" to "true" and then edit /etc/hostname.

  • 2
    Works like a charm. I would have never gotten that from the comment line above it: " # This will cause the set+update hostname module to not operate (if true) ". Thanks so much, so many incorrect methods out on the web. – Andy Wylde Apr 27 '18 at 14:39
10

The hostname is being reset by cloud-init which can either be disabled as follows (after which you can set the hostname in the normal way e.g. using hostnamectl):

sudo touch /etc/cloud/cloud-init.disabled

Or you can use cloud-init and create/modify the user-data file (usually found at: /var/lib/cloud/seed/nocloud-net/user-data) so that the hostname: entry is set to the desired hostname (provided preserve_hostname: is not set). Firstly you'll need to clean the existing config:

sudo cloud-init clean

And then reinitialise cloud-init's config from the new/modified user-data file:

sudo cloud-init init

Then reboot. See the cloud-init docs for more details.

  • Be carful with running cloud-init clean or cloud-init init it can rewrite your /etc/netplan/ yaml files. – Michael D. Sep 11 '18 at 13:37
5

For the "lazy guys" like me, a copy-paste solution :)

sudo sed -i '/preserve_hostname: false/c\preserve_hostname: true' /etc/cloud/cloud.cfg && sudo hostnamectl set-hostname ReplaceThisWithTheHostnamePreferred

First command allows the new hostname to be remembered by the OS.

The second part (after the &&) will only run if the first part has finished successfully and will set the hostname to the desired value.

Regards! L

2

1- Edit vi /etc/cloud/cloud.cfg and change

preserve_hostname: false

To

preserve_hostname: true

Save and exit.

2- Edit vi /etc/hostname and replace your new name in this file or you can do this step with bellow command.

hostnamectl set-hostname NEWNAME

Enjoy it :)

0

I had the same issue and found that, after removing the cloud packages, you can change your hostname.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf
  • 1
    I'm sure this will work but I think I prefer the answer above. Thanks for responding though – Andy Wylde Apr 27 '18 at 14:43
  • I suggest to refrain from this solution if you are using ubuntu-server package. Why? Because the above mentioned packages are prerequisites of it. Description of the ubuntu-server package 'Description-en: The Ubuntu Server system This package depends on all of the packages in the Ubuntu Server system . It is also used to help ensure proper upgrades, so it is recommended that it not be removed.' – linux64kb May 30 '18 at 17:29

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.