Le nom d'hôte revient à l'ancien nom après le redémarrage en 18.04 LTS

32

Cela peut être lié à l'exécution de 18.04 LTS en tant que machine virtuelle (l'hôte est Win 2016 DC), mais je ne peux pas comprendre comment. J'ai essayé toutes les méthodes que je connais pour changer le nom d'hôte mais il revient toujours au nom d'hôte que j'ai entré lorsque j'ai construit la machine au redémarrage. J'ai essayé ce qui suit:

  1. hostnamectl set-hostname xxx.
  2. Modification directe du nom d'hôte.
  3. Ajout de --static à hostnamectl.
  4. Modification du fichier d'hôtes et ajout du nom d'hôte souhaité.
  5. Recherche de références à l'ancien nom d'hôte sur le lecteur avant le redémarrage.
  6. Quelques autres suggestions étranges que j'ai trouvées sur Internet ne valent pas la peine d'être mentionnées.

Je n'ai pas de DNS pour ce serveur pour le moment.

Exemple:

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

J'avais eu ce problème avec la version bêta du 18.04, mais je me suis dit que j'attendrais la version finale. J'ai également considéré que cela pouvait être un problème avec le fait que j'avais cloné les machines virtuelles, mais c'était une toute nouvelle version construite à partir de zéro avec la distribution récemment publiée.

Qu'est-ce que je rate?

Merci d'avance.

Andy Wylde
la source

Réponses:

49

Modifiez d'abord /etc/cloud/cloud.cfg et définissez le paramètre "preserve_hostname" de "false" sur "true", puis modifiez / etc / hostname.

Karsten Hoffmann
la source
4
Fonctionne comme un charme. Je ne l'aurais jamais obtenu de la ligne de commentaire au-dessus: "# Cela entraînera le module set + update hostname à ne pas fonctionner (si vrai)". Merci beaucoup, tant de méthodes incorrectes sur le Web.
Andy Wylde
18

Le nom d'hôte est réinitialisé, cloud-initce qui peut être désactivé comme suit (après quoi vous pouvez définir le nom d'hôte de la manière normale, par exemple en utilisant hostnamectl):

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

Ou vous pouvez utiliser cloud-init et créer / modifier le user-datafichier (généralement trouvé à:) /var/lib/cloud/seed/nocloud-net/user-dataafin que l' hostname:entrée soit définie sur le nom d'hôte souhaité (fourni preserve_hostname:n'est pas défini). Tout d'abord, vous devrez nettoyer la configuration existante:

sudo cloud-init clean

Ensuite, réinitialisez la configuration de cloud-init à partir du fichier de données utilisateur nouveau / modifié:

sudo cloud-init init

Redémarrez ensuite. Voir les documents cloud-init pour plus de détails.

Pierz
la source
3
Soyez prudent avec l'exécution cloud-init cleanou cloud-init initil peut réécrire vos fichiers / etc / netplan / yaml.
Michael D.
3
Il mettra également à jour votre clé d'hôte SSH, ce qui peut être potentiellement dangereux (les clients doivent accepter la nouvelle clé d'hôte avant de pouvoir se reconnecter)
Per Lundberg
5

Pour les "paresseux" comme moi, une solution copier-coller :)

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

La première commande permet au nouveau nom d'hôte d'être mémorisé par le système d'exploitation.

La deuxième partie (après le &&) ne s'exécutera que si la première partie s'est terminée avec succès et définira le nom d'hôte à la valeur souhaitée.

Cordialement! L

linux64kb
la source
4

1- Modifier vi /etc/cloud/cloud.cfget changer

preserve_hostname: false

À

preserve_hostname: true

Sauvegarder et quitter.

2- Modifiez vi /etc/hostnameet remplacez votre nouveau nom dans ce fichier ou vous pouvez faire cette étape avec la commande ci-dessous.

hostnamectl set-hostname NEWNAME

Profitez-en :)

Milad Norouzi
la source
0

J'ai eu le même problème et j'ai constaté qu'après avoir supprimé les packages cloud, vous pouvez changer votre nom d'hôte.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf
Maddin
la source
1
Je suis sûr que cela fonctionnera, mais je pense que je préfère la réponse ci-dessus. Merci d'avoir répondu
Andy Wylde
Je suggère de ne pas utiliser cette solution si vous utilisez le paquet ubuntu-server. Pourquoi? Parce que les packages mentionnés ci-dessus en sont les prérequis. Description du package ubuntu-server 'Description-fr: Le système Ubuntu Server Ce package dépend de tous les packages du système Ubuntu Server. Il est également utilisé pour garantir des mises à niveau correctes, il est donc recommandé de ne pas le supprimer.
linux64kb
0

Si vous n'êtes pas satisfait de laisser une ancienne version quelque part, ouvrez simplement le fichier à /var/lib/cloud/seed/nocloud-net/user-dataet modifiez votre nom d'hôte sur la ligne:

hostname: cm-lc-nc

Exécutez ensuite:

cloud-init clean
cloud-init init

Il sera ensuite défini /etc/hostnamesur la nouvelle valeur et restera cohérent lors des redémarrages. Cela supprimera toutes les traces du nom d'hôte précédent et dans le cas où il preserve_hostnameest réinitialisé ou ignoré pour une raison quelconque, vous ne perdrez toujours pas votre nouveau nom d'hôte.

Levi H
la source