El nombre de host vuelve al nombre anterior después de reiniciar en 18.04 LTS

32

Esto puede estar relacionado con la ejecución de 18.04 LTS como una máquina virtual (Host is Win 2016 DC) pero no puedo entender cómo. He intentado todos los métodos que conozco para cambiar el nombre de host, pero siempre vuelve al nombre de host que ingresé cuando construí la máquina al reiniciar. He probado lo siguiente:

  1. hostnamectl set-hostname xxx.
  2. Edición de nombre de host directamente.
  3. Agregando --static a hostnamectl.
  4. Editar el archivo de hosts y agregar el nombre de host deseado.
  5. Buscando en la unidad referencias al antiguo nombre de host antes de reiniciar.
  6. Algunas otras sugerencias extrañas que encontré en Internet no vale la pena mencionar.

No tengo DNS para este servidor en este momento.

Ejemplo:

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

Tuve este problema con la versión beta de 18.04, pero pensé que esperaría la copia de lanzamiento. También consideré que podría ser un problema el hecho de que había clonado las máquinas virtuales, pero esta era una versión completamente nueva creada desde cero con la distribución recién lanzada.

¿Qué me estoy perdiendo?

Gracias por adelantado.

Andy Wylde
fuente

Respuestas:

49

Primero edite /etc/cloud/cloud.cfg y configure el parámetro "preserve_hostname" de "false" a "true" y luego edite / etc / hostname.

Karsten Hoffmann
fuente
44
Funciona de maravilla. Nunca lo habría obtenido de la línea de comentarios que se encuentra arriba: "# Esto hará que el módulo set + update hostname no funcione (si es verdadero)". Muchas gracias, tantos métodos incorrectos en la web.
Andy Wylde
18

El nombre de host se restablece mediante el cloud-initcual puede deshabilitarse de la siguiente manera (después de lo cual puede establecer el nombre de host de la manera normal, por ejemplo, usando hostnamectl):

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

O puede usar cloud-init y crear / modificar el user-dataarchivo (generalmente se encuentra en:) /var/lib/cloud/seed/nocloud-net/user-datapara que la hostname:entrada se establezca en el nombre de host deseado (siempre preserve_hostname:que no se establezca). En primer lugar, deberá limpiar la configuración existente:

sudo cloud-init clean

Y luego reinicialice la configuración de cloud-init del archivo de datos de usuario nuevo / modificado:

sudo cloud-init init

Luego reiniciar. Consulte los documentos de inicio de la nube para obtener más detalles.

Pierz
fuente
3
Tenga cuidado con la ejecución cloud-init cleano cloud-init initpuede reescribir sus archivos / etc / netplan / yaml.
Michael D.
3
También actualizará su clave de host SSH que puede ser potencialmente dañina (los clientes deben aceptar la nueva clave de host antes de poder volver a conectarse)
Según Lundberg,
5

Para los "chicos vagos" como yo, una solución de copiar y pegar :)

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

El primer comando permite que el sistema operativo recuerde el nuevo nombre de host.

La segunda parte (después de &&) solo se ejecutará si la primera parte ha finalizado con éxito y establecerá el nombre de host en el valor deseado.

¡Saludos! L

linux64kb
fuente
4

1- Editar vi /etc/cloud/cloud.cfgy cambiar

preserve_hostname: false

A

preserve_hostname: true

Guardar y Salir.

2- Edite vi /etc/hostnamey reemplace su nuevo nombre en este archivo o puede hacer este paso con el siguiente comando.

hostnamectl set-hostname NEWNAME

Disfrútala :)

Milad Norouzi
fuente
0

Tuve el mismo problema y descubrí que, después de eliminar los paquetes en la nube, puede cambiar su nombre de host.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf
Maddin
fuente
1
Estoy seguro de que esto funcionará, pero creo que prefiero la respuesta anterior. Gracias por responder, sin embargo
Andy Wylde
Sugiero abstenerse de esta solución si está utilizando el paquete ubuntu-server. ¿Por qué? Debido a que los paquetes mencionados anteriormente son requisitos previos de la misma. Descripción del paquete ubuntu-server 'Descripción-es: El sistema Ubuntu Server Este paquete depende de todos los paquetes en el sistema Ubuntu Server. También se utiliza para ayudar a garantizar las actualizaciones adecuadas, por lo que se recomienda que no se elimine '.
linux64kb
0

Si no está satisfecho con dejar una versión anterior en algún lugar, simplemente abra el archivo en /var/lib/cloud/seed/nocloud-net/user-datay cambie su nombre de host en la línea:

hostname: cm-lc-nc

Entonces corre:

cloud-init clean
cloud-init init

Luego se establecerá /etc/hostnameen el nuevo valor y se mantendrá constante en todos los reinicios. Esto eliminará todos los rastros del nombre de host anterior y, en caso de que preserve_hostnamese restablezca o se ignore por alguna razón, aún no perderá su nuevo nombre de host.

Levi H
fuente