O nome do host é revertido para o nome antigo após a reinicialização no LTS 18.04

32

Isso pode estar relacionado à execução do 18.04 LTS como uma máquina virtual (o host é o Win 2016 DC), mas não consigo descobrir como. Eu tentei todos os métodos conhecidos para alterar o nome do host, mas ele sempre reverte para o nome do host que eu inseri quando construí a máquina na reinicialização. Eu tentei o seguinte:

  1. hostnamectl set-hostname xxx.
  2. Editando o nome do host diretamente.
  3. Adicionando --static ao hostnamectl.
  4. Editando o arquivo hosts e adicionando o nome do host desejado.
  5. Pesquisando na unidade por referências ao nome do host antigo antes da reinicialização.
  6. Algumas outras sugestões estranhas que encontrei na internet não valem a pena mencionar.

Não tenho DNS para este servidor no momento.

Exemplo:

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

Eu tive esse problema com a versão beta de 18.04, mas achei que esperaria pela cópia do lançamento. Também considerei que poderia haver um problema com o fato de eu ter clonado as VMs, mas essa era uma versão totalmente nova, criada do zero com a distribuição recém-lançada.

o que estou perdendo?

Desde já, obrigado.

Andy Wylde
fonte

Respostas:

49

Primeiro edite /etc/cloud/cloud.cfg e defina o parâmetro "preserve_hostname" de "false" para "true" e, em seguida, edite / etc / hostname.

Karsten Hoffmann
fonte
4
Funciona como um encanto. Eu nunca teria conseguido isso na linha de comentários acima: "# Isso fará com que o módulo set + update hostname não funcione (se verdadeiro)". Muito obrigado, muitos métodos incorretos na web.
Andy Wylde
18

O nome do host está sendo redefinido cloud-inite pode ser desativado da seguinte forma (após o qual você pode definir o nome do host da maneira normal, por exemplo, usando hostnamectl):

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

Ou você pode usar o cloud-init e criar / modificar o user-dataarquivo (geralmente encontrado em /var/lib/cloud/seed/nocloud-net/user-data:) para que a hostname:entrada seja configurada com o nome do host desejado (desde que preserve_hostname:não seja definido). Primeiramente, você precisará limpar a configuração existente:

sudo cloud-init clean

E, em seguida, reinicialize a configuração do cloud-init a partir do novo arquivo de dados do usuário modificado:

sudo cloud-init init

Então reinicie. Consulte os documentos cloud-init para obter mais detalhes.

Pierz
fonte
3
Tenha cuidado com a execução cloud-init cleanou cloud-init initpode reescrever seus arquivos / etc / netplan / yaml.
Michael D.
3
Ele também atualizará a chave do host SSH, que pode ser potencialmente prejudicial (os clientes precisam aceitar a nova chave do host antes de se reconectar)
Por Lundberg
5

Para os "caras preguiçosos" como eu, uma solução copiar e colar :)

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

O primeiro comando permite que o novo nome do host seja lembrado pelo sistema operacional.

A segunda parte (após o &&) será executada apenas se a primeira parte tiver sido concluída com êxito e definirá o nome do host para o valor desejado.

Saudações! eu

linux64kb
fonte
4

1- Editar vi /etc/cloud/cloud.cfge alterar

preserve_hostname: false

Para

preserve_hostname: true

Salvar e sair.

2- Edite vi /etc/hostnamee substitua seu novo nome neste arquivo ou você pode executar esta etapa com o comando abaixo.

hostnamectl set-hostname NEWNAME

Aproveite :)

Milad Norouzi
fonte
0

Eu tive o mesmo problema e descobri que, depois de remover os pacotes de nuvem, você pode alterar seu nome de host.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf
Maddin
fonte
1
Tenho certeza que isso funcionará, mas acho que prefiro a resposta acima. Obrigado por responder embora
Andy Wylde
Sugiro abster-se desta solução se você estiver usando o pacote ubuntu-server. Por quê? Porque os pacotes acima mencionados são pré-requisitos. Descrição do pacote ubuntu-server 'Description-pt: O sistema Ubuntu Server Este pacote depende de todos os pacotes no sistema Ubuntu Server. Também é usado para ajudar a garantir atualizações adequadas, por isso é recomendável que não seja removido. '
Linux64kb
0

Se você não estiver satisfeito em deixar uma versão mais antiga em algum lugar, basta abrir o arquivo em /var/lib/cloud/seed/nocloud-net/user-datae alterar seu nome de host na linha:

hostname: cm-lc-nc

Então corra:

cloud-init clean
cloud-init init

Ele será definido /etc/hostnamecomo o novo valor e permanecerá consistente nas reinicializações. Isso removerá todos os rastreamentos do nome do host anterior e, caso preserve_hostnameseja redefinido ou ignorado por algum motivo, você ainda não perderá seu novo nome de host.

Levi H
fonte