Ім'я хоста повертається до старого імені після перезавантаження в 18.04 LTS


32

Це може бути пов'язано із запуском 18.04 LTS як віртуальної машини (Host is Win 2016 DC), але я не можу зрозуміти, як це зробити. Я перепробував кожен метод, про який я знаю, щоб змінити ім'я хоста, але він завжди повертається до імені хоста, яке я ввів, коли я створив машину при перезавантаженні. Я спробував таке:

  1. hostnamectl set-hostname xxx.
  2. Редагування імені хоста безпосередньо.
  3. Додавання --static до hostnamectl.
  4. Редагування файлу хостів та додавання потрібного імені хоста.
  5. Пошук диска для посилань на старе ім'я хоста перед перезавантаженням.
  6. Ще кілька дивних пропозицій, які я знайшов в Інтернеті, не варто згадувати.

На даний момент у мене немає DNS для цього сервера.

Приклад:

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

У мене була проблема з бета-версією 18.04, але я подумав, що чекаю копії релізу. Я також вважав, що це може бути проблемою з тим, що я клонував ВМ, але це була абсолютно нова версія, побудована з нуля із щойно випущеним дистрибутивом.

Що я пропускаю?

Заздалегідь спасибі.


Відповіді:


49

Спочатку відредагуйте /etc/cloud/cloud.cfg і встановіть параметр "save_hostname" з "false" в "true", а потім відредагуйте / etc / hostname.


4
Працює як шарм. Я б ніколи не отримував цього з рядка коментарів над ним: "# Це призведе до того, що модуль набору + оновлення хоста не працюватиме (якщо це правда)". Велике спасибі, стільки неправильних методів в Інтернеті.
Енді Вільде

18

Скидається ім'я хоста, за допомогою cloud-initякого його можна буде відключити наступним чином (після цього ви можете встановити ім'я хоста звичайним способом, наприклад, використовуючи hostnamectl):

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

Або ви можете використовувати cloud-init та створити / змінити user-dataфайл (зазвичай знаходиться у /var/lib/cloud/seed/nocloud-net/user-data:), щоб hostname:запис був встановлений на потрібне ім'я хоста (надається preserve_hostname:не встановлено). По-перше, вам потрібно буде очистити існуючий конфігурацію:

sudo cloud-init clean

А потім повторно ініціалізуйте налаштування cloud-init з нового / зміненого файлу даних користувача:

sudo cloud-init init

Потім перезавантажте. Докладніші відомості див. У документах cloud-init .


3
Будьте carful з запуском cloud-init cleanабо cloud-init initвін може переписати ваші / файли і т.д. / netplan / YAML.
Майкл Д.

3
Він також оновить ваш хост-ключ SSH, який може бути потенційно шкідливим (клієнти повинні прийняти новий ключ хоста, перш ніж вони зможуть знову підключитися)
Per Lundberg

5

Для таких "ледачих хлопців", як я, рішення копіювання-вставки :)

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

Перша команда дозволяє запам'ятати нове ім'я хоста в ОС.

Друга частина (після &&) запуститься лише в тому випадку, якщо перша частина успішно закінчиться і встановить ім'я хоста потрібним значенням.

З повагою! L


4

1- Редагувати vi /etc/cloud/cloud.cfgта змінювати

preserve_hostname: false

До

preserve_hostname: true

Збережіть і вийдіть.

2- Відредагуйте vi /etc/hostnameта замініть своє нове ім'я в цьому файлі, або ви можете зробити цей крок за допомогою команди нижче.

hostnamectl set-hostname NEWNAME

Насолоджуйся цим :)


0

У мене була та сама проблема, і я виявив, що після видалення хмарних пакетів ви можете змінити ім'я хоста.

apt remove cloud-init cloud-initramfs-copymods cloud-initramfs-dyn-netconf

1
Я впевнений, що це спрацює, але я вважаю, що віддаю перевагу відповіді вище. Дякуємо, що відповіли, хоча
Енді Вільде,

Я пропоную утриматися від цього рішення, якщо ви використовуєте пакет ubuntu-сервер. Чому? Тому що вищезазначені пакети є його передумовою. Опис пакету ubuntu-сервера 'Description-en: система Ubuntu Server Цей пакет залежить від усіх пакетів у системі Ubuntu Server. Він також використовується для забезпечення належного оновлення, тому рекомендується його не видаляти. "
linux64kb

0

Якщо ви не задоволені тим, що десь залишили старішу версію, просто відкрийте файл у /var/lib/cloud/seed/nocloud-net/user-dataта змініть ім'я хоста в рядку:

hostname: cm-lc-nc

Потім запустіть:

cloud-init clean
cloud-init init

Потім воно встановиться /etc/hostnameна нове значення і залишатиметься послідовним при перезавантаженнях. Це видалить усі сліди попереднього імені хоста, і якщо preserve_hostnameви перезапущені чи ігноровані з якихось причин, ви все одно не втратите нове ім’я хоста.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.