ชื่อโฮสต์จะเปลี่ยนเป็นชื่อเดิมหลังจากรีบูตใน 18.04 LTS


32

นี่อาจเกี่ยวข้องกับการรัน 18.04 LTS เป็นเครื่องเสมือน (โฮสต์คือ Win 2016 DC) แต่ฉันไม่สามารถหาวิธีได้ ฉันลองทุกวิธีที่ฉันรู้ว่าจะเปลี่ยนชื่อโฮสต์ แต่จะเปลี่ยนกลับเป็นชื่อโฮสต์ที่ฉันป้อนทุกครั้งเมื่อฉันสร้างเครื่องเมื่อรีบูต ฉันได้ลองทำสิ่งต่อไปนี้แล้ว:

  1. hostnamectl set-hostname xxx
  2. การแก้ไขชื่อโฮสต์โดยตรง
  3. การเพิ่ม - คงที่เพื่อ 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 แต่ฉันคิดว่าฉันจะรอสำเนาการเปิดตัว ฉันยังคิดว่ามันอาจมีปัญหากับความจริงที่ว่าฉันได้ทำการโคลน VMs แต่นี่เป็นรุ่นใหม่ล่าสุดที่สร้างขึ้นตั้งแต่เริ่มต้นด้วย distro ที่เพิ่งเปิดตัว

ฉันพลาดอะไรไป

ขอบคุณล่วงหน้า.


คำตอบ:


49

ขั้นแรกแก้ไข /etc/cloud/cloud.cfg และตั้งค่าพารามิเตอร์ "erve_hostname "จาก" false "เป็น" true "จากนั้นแก้ไข / etc / hostname


4
ทำงานเหมือนจับใจ ฉันไม่เคยได้รับสิ่งนั้นจากบรรทัดความคิดเห็นด้านบน: "# นี่จะทำให้โมดูลชื่อโฮสต์ set + update ไม่ทำงาน (ถ้าเป็นจริง)" ขอบคุณมากวิธีที่ไม่ถูกต้องมากมายบนเว็บ
Andy Wylde

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
ระมัดระวังในการทำงานcloud-init cleanหรือcloud-init initสามารถเขียนไฟล์ / etc / netplan / yaml ของคุณใหม่
Michael D.

3
นอกจากนี้ยังจะอัปเดตรหัสโฮสต์ SSH ของคุณซึ่งอาจเป็นอันตรายได้ (ลูกค้าต้องยอมรับรหัสโฮสต์ใหม่ก่อนที่จะเชื่อมต่อใหม่)
ต่อ 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
ฉันแน่ใจว่าจะใช้งานได้ แต่ฉันคิดว่าฉันชอบคำตอบข้างต้น ขอขอบคุณที่ตอบกลับว่า
Andy Wylde

ฉันขอแนะนำให้งดเว้นจากโซลูชันนี้หากคุณใช้แพ็คเกจ ubuntu-server ทำไม? เนื่องจากแพ็คเกจดังกล่าวข้างต้นเป็นข้อกำหนดเบื้องต้นของมัน คำอธิบายของแพ็คเกจ ubuntu-server '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รีเซ็ตหรือเพิกเฉยไม่ว่าด้วยเหตุผลใดก็ตามคุณจะไม่สูญเสียชื่อโฮสต์ใหม่

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.