Der Hostname wird nach einem Neustart in 18.04 LTS auf den alten Namen zurückgesetzt

32

Dies kann mit dem Ausführen von 18.04 LTS als virtuelle Maschine zusammenhängen (Host ist Win 2016 DC), aber ich kann nicht herausfinden, wie. Ich habe jede mir bekannte Methode ausprobiert, um den Hostnamen zu ändern, aber er wird immer auf den Hostnamen zurückgesetzt, den ich beim Erstellen des Computers beim Neustart eingegeben habe. Ich habe Folgendes versucht:

  1. hostnamectl set-hostname xxx.
  2. Bearbeiten Sie den Hostnamen direkt.
  3. Hinzufügen von --static zu hostnamectl.
  4. Bearbeiten der Hostdatei und Hinzufügen des gewünschten Hostnamens.
  5. Laufwerk wird vor dem Neustart nach Verweisen auf den alten Hostnamen durchsucht.
  6. Ein paar andere seltsame Vorschläge, die ich im Internet nicht erwähnenswert fand.

Ich habe zu diesem Zeitpunkt kein DNS für diesen Server.

Beispiel:

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

Ich hatte dieses Problem mit der Beta vom 18.04, aber ich dachte, ich würde auf die Release-Kopie warten. Ich dachte auch, dass es ein Problem mit der Tatsache sein könnte, dass ich die VMs geklont hatte, aber dies war eine brandneue Version, die von Grund auf mit der gerade veröffentlichten Distribution erstellt wurde.

Was vermisse ich?

Danke im Voraus.

Andy Wylde
quelle

Antworten:

49

Bearbeiten Sie zuerst /etc/cloud/cloud.cfg und setzen Sie den Parameter "preserve_hostname" von "false" auf "true" und bearbeiten Sie dann / etc / hostname.

Karsten Hoffmann
quelle
4
Klappt wunderbar. Ich hätte das nie aus der Kommentarzeile darüber erhalten: "# Dies führt dazu, dass das Hostnamen-Modul set + update nicht funktioniert (falls wahr)." Vielen Dank, so viele falsche Methoden im Web.
Andy Wylde
18

Der Hostname wird zurückgesetzt cloud-initund kann wie folgt deaktiviert werden (danach können Sie den Hostnamen wie gewohnt einstellen, z. B. mit hostnamectl):

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

Oder Sie können cloud-init verwenden und die user-dataDatei erstellen / ändern (normalerweise zu finden unter :), /var/lib/cloud/seed/nocloud-net/user-datasodass der hostname:Eintrag auf den gewünschten Hostnamen festgelegt wird (sofern preserve_hostname:nicht festgelegt). Zunächst müssen Sie die vorhandene Konfiguration bereinigen:

sudo cloud-init clean

Anschließend wird die Konfiguration von cloud-init aus der neuen / geänderten Benutzerdatendatei neu initialisiert:

sudo cloud-init init

Starten Sie dann neu. Weitere Informationen finden Sie in den Cloud-Init-Dokumenten .

Pierz
quelle
3
Seien Sie vorsichtig beim Laufen cloud-init cleanoder cloud-init inites kann Ihre / etc / netplan / yaml-Dateien umschreiben.
Michael D.
3
Außerdem wird Ihr SSH-Hostschlüssel aktualisiert, was potenziell schädlich sein kann (Clients müssen den neuen Hostschlüssel akzeptieren, bevor sie erneut eine Verbindung herstellen können)
Per Lundberg,
5

Für die "Faulen" wie ich eine Copy-Paste-Lösung :)

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

Mit dem ersten Befehl kann sich das Betriebssystem den neuen Hostnamen merken.

Der zweite Teil (nach dem &&) wird nur ausgeführt, wenn der erste Teil erfolgreich abgeschlossen wurde, und setzt den Hostnamen auf den gewünschten Wert.

Grüße! L

linux64kb
quelle
4

1- Bearbeiten vi /etc/cloud/cloud.cfgund ändern

preserve_hostname: false

Zu

preserve_hostname: true

Speichern und schließen.

2- Bearbeiten vi /etc/hostnameund ersetzen Sie Ihren neuen Namen in dieser Datei oder führen Sie diesen Schritt mit dem folgenden Befehl aus.

hostnamectl set-hostname NEWNAME

Geniesse es :)

Milad Norouzi
quelle
0

Ich hatte das gleiche Problem und stellte fest, dass Sie nach dem Entfernen der Cloud-Pakete Ihren Hostnamen ändern können.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf
Maddin
quelle
1
Ich bin mir sicher, dass dies funktionieren wird, aber ich glaube, ich bevorzuge die Antwort oben. Vielen Dank für Ihre Antwort
Andy Wylde
Ich empfehle, auf diese Lösung zu verzichten, wenn Sie ein Ubuntu-Server-Paket verwenden. Warum? Denn die oben genannten Pakete sind Voraussetzungen dafür. Beschreibung des Ubuntu-Server-Pakets 'Description-de: Das Ubuntu-Server-System Dieses Paket hängt von allen Paketen im Ubuntu-Server-System ab. Es wird auch verwendet, um die ordnungsgemäße Aktualisierung sicherzustellen. Es wird daher empfohlen, es nicht zu entfernen. '
linux64kb
0

Wenn Sie mit einer älteren Version nicht zufrieden sind, öffnen Sie einfach die Datei unter /var/lib/cloud/seed/nocloud-net/user-dataund ändern Sie Ihren Hostnamen in der folgenden Zeile:

hostname: cm-lc-nc

Dann renne:

cloud-init clean
cloud-init init

Es wird dann /etc/hostnameauf den neuen Wert gesetzt und bleibt über Neustarts hinweg konsistent. Dadurch werden alle Spuren des vorherigen Hostnamens entfernt, und falls der Hostname preserve_hostnamezurückgesetzt oder aus irgendeinem Grund ignoriert wird, verlieren Sie ihn trotzdem nicht.

Levi H
quelle