CentOS7 修改主機名 hostname

問題

之前創建的虛擬機hostname可以自動設置為本機的IP地址,這樣的話登錄到某個主機上后,通過提示符上顯示的主機名就能隨時知道本機的IP地址,非常方便。但是最近創建了一批私有專區的機器,剛創建的時候是沒有分配IP的,所以創建出來的主機的hostname就變成了一段無意義的字符串。現在就是要做的就是把主機的IP設置成主機的hostname。

概念

Linux操作系統的hostname是一個kernel變量,可以通過hostname命令來查看本機的hostname。也可以直接cat /proc/sys/kernel/hostname查看。

在CentOS中,有三種定義的主機名:靜態的(static),瞬態的(transient),和靈活的(pretty)。靜態主機名也稱為內核主機名,是系統在啟動時從/etc/hostname自動初始化的主機名。瞬態主機名是在系統運行時臨時分配的主機名,例如,通過DHCP或mDNS服務器分配。靜態主機名和瞬態主機名都遵從作為互聯網域名同樣的字符限制規則。而另一方面,靈活主機名則允許使用自由形式(包括特殊/空白字符)的主機名,以展示給終端用戶(如qqmm)。

解決方案

hostname

查看主機名

hostname

臨時修改主機名,重啟后失效

hostname new_hostname

修改/etc/hostname

使用命令man hostname 查看SET NAME

When called with one argument or with the --file option, the commands set the host name or the NIS/YP domain name. hostname uses the sethostname(2) function, while all of the three domain‐
name, ypdomainname and nisdomainname use setdomainname(2). Note, that this is effective only until the next reboot. Edit /etc/hostname for permanent change.

通過修改/etc/hostname, 重啟后hostname就變為新值

使用ansible的hostname模塊

這也是我進行批量修改操作使用的方式

[root@10-10-221-91 xct_centos]# cat init_hostname.yml
---
- hosts: xct20
  become: yes
  gather_facts: false
  vars:
  tasks:
    - name: show hostname
      shell: hostname
    - name: rename hostname
      hostname:
          name: "{{inventory_hostname.replace('.','-')}}"

hostnamectl

在CentOS 7中,有個叫hostnamectl的命令行工具,它允許你查看或修改與主機名相關的配置。

要查看主機名相關的設置:

[root@localhost ~]# hostnamectl
Static hostname: localhost.localdomain
      Icon name: computer-vm
        Chassis: vm
     Machine ID: 21ff9d4ebdd94e949b9fd6cbdb1926c0
        Boot ID: 2a952e91c02841e3ae10de0d16dd3f01
 Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
         Kernel: Linux 3.10.0-327.el7.x86_64
   Architecture: x86-64
[root@localhost ~]# hostnamectl status
Static hostname: localhost.localdomain
      Icon name: computer-vm
        Chassis: vm
     Machine ID: 21ff9d4ebdd94e949b9fd6cbdb1926c0
        Boot ID: 2a952e91c02841e3ae10de0d16dd3f01
 Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
    CPE OS Name: cpe:/o:centos:centos:7
         Kernel: Linux 3.10.0-327.el7.x86_64
   Architecture: x86-64

只查看靜態、瞬態或靈活主機名,分別使用--static,--transient或--pretty選項。

[root@localhost ~]# hostnamectl --static
localhost.localdomain
[root@localhost ~]# hostnamectl --transient
localhost.localdomain
[root@localhost ~]# hostnamectl --pretty

要同時修改所有三個主機名:靜態、瞬態和靈活主機名:

[root@localhost ~]# hostnamectl set-hostname qqmm
[root@localhost ~]# hostnamectl --pretty
[root@localhost ~]# hostnamectl --static
qqmm
[root@localhost ~]# hostnamectl --transient
qqmm

就像上面展示的那樣,在修改靜態/瞬態主機名時,任何特殊字符或空白字符會被移除,而提供的參數中的任何大寫字母會自動轉化為小寫。
一旦修改了靜態主機名,/etc/hostname 將被自動更新。然而,/etc/hosts 不會更新以保存所做的修改,所以你每次在修改主機名后一定要手動更新/etc/hosts,之后再重啟CentOS 7。否則系統再啟動時會很慢。

手動更新/etc/hosts

vim /etc/hosts
#127.0.0.1   localhost localhost.localdomain localhost4 localhost4.localdomain4
127.0.0.1  qqmm
#::1         localhost localhost.localdomain localhost6 localhost6.localdomain6
::1        qqmm

重啟CentOS 7 之后(reboot -f ),

[root@qqmm ~]# hostname
qqmm
[root@qqmm ~]# hostnamectl
Static hostname: qqmm
     Icon name: computer-vm
       Chassis: vm
    Machine ID: 21ff9d4ebdd94e949b9fd6cbdb1926c0
       Boot ID: 2a952e91c02841e3ae10de0d16dd3f01
Virtualization: kvm
Operating System: CentOS Linux 7 (Core)
   CPE OS Name: cpe:/o:centos:centos:7
        Kernel: Linux 3.10.0-327.el7.x86_64
  Architecture: x86-64

如果你只想修改特定的主機名(靜態,瞬態或靈活),你可以使用--static,--transient或--pretty選項。例如,要永久修改主機名,你可以修改靜態主機名:

[root@localhost ~]# hostnamectl --static set-hostname qqmm
重啟CentOS 7 之后(reboot -f ),
[root@localhost ~]# hostnamectl --static
qqmm
[root@localhost ~]# hostnamectl --transient
qqmm
[root@localhost ~]# hostnamectl --pretty
qqmm
[root@localhost ~]# hostname
qqmm

其實,你不必重啟機器以激活永久主機名修改。上面的命令會立即修改內核主機名。
注銷并重新登入后在命令行提示來觀察新的靜態主機名

參考:

  1. 如何在CentOS 7上修改主機名,http://www.lxweimin.com/p/39d7000dfa47
  2. ansible hostname模塊,http://docs.ansible.com/ansible/latest/hostname_module.html
  3. ansible 使用主機IP批量修改機器名, https://my.oschina.net/jastme/blog/510707
  4. Ansible 進階技巧,https://www.ibm.com/developerworks/cn/linux/1608_lih_ansible/index.html
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,951評論 19 139
  • ansible 系統架構 ansible簡介ansible是新出現的自動化運維工具,ansible是一個配置管理和...
    運維阿文閱讀 9,681評論 1 52
  • 安裝ansible 1.yum安裝:RHEL(Centos)7版本: 2.Apt(Ubuntu)安裝方式: 3.h...
    愛吃土豆的程序猿閱讀 11,159評論 0 12
  • ansible介紹ansible常用模塊使用playbooktemplates,模板條件測試和循環迭代roles,...
    哈嘍別樣閱讀 1,422評論 0 3
  • 文/溫臺 如果我對一件事情很耐心,那無疑是我的興趣所在。如果我對你很耐心,那無疑我是真的很喜歡你。 我覺...
    溫臺閱讀 1,186評論 9 4