
# 如何设置裸金属服务器的静态主机名？
#### 问题描述
Linux裸金属服务器的静态主机名来源于创建裸金属服务器时，通过控制台注入的用户自定义名称。可以使用控制台或**hostname**命令更改裸金属服务器的主机名，但如果重启裸金属服务器，将自动还原为控制台上注入的用户自定义名称。
#### 自动更新方案（推荐）
在控制台修改裸金属服务器的主机名，并在操作系统内部打开自动同步主机名的开关，重启裸金属服务器后，能够将控制台上修改的主机名同步至裸金属服务器操作系统。
自动更新主机名时，有如下约束：
- 通过控制台修改主机名时不支持中文。
- 主机名最大长度为63个字节。
- 不支持特殊字符（中划线、下划线和点除外）。
- 不支持大写字母。
- Windows裸金属服务器不支持通过该方法同步主机名。
1. 登录[BMS控制台](https://console.huaweicloud.com/ecm/?#/bms/manager/bmsInfo/vmList)。
2. 单击待修改主机名的裸金属服务器名称，进入详情页面。
3. 单击名称后的![](https://support.huaweicloud.com/bms_faq/zh-cn_image_0284616146.png)，输入满足以上约束的主机名称，确认修改后单击右侧的![](https://support.huaweicloud.com/bms_faq/zh-cn_image_0284616147.png)，保存主机名设置。
4. 登录该裸金属服务器操作系统，通过以下命令，打开自动同步主机名功能开关。
   **sed -i 's/auto_synchronize_hostname.\*/auto_synchronize_hostname = True/g' \`find / -name bms-network-config.conf**
   通过以下命令，检查是否已更新。
   **cat \`find / -name bms-network-config.conf**
   ![](https://support.huaweicloud.com/bms_faq/zh-cn_image_0000001562346554.png "点击放大")
   
5. 再次进入控制台，在该裸金属服务器所在行，单击操作列的"更多 \> 重启"。 等待10分钟左右，保证裸金属服务器重启完成并自动更新主机名。
   ![](https://support.huaweicloud.com/bms_faq/public_sys-resources/note_3.0-zh-cn.png)
   如果[4]中的参数项"auto_synchronize_hostname"设置为"False"，裸金属服务器主机名会保持创建时用户自定义的主机名。
   
 
#### 手动更新方案
使用**hostname**命令修改Linux裸金属服务器的主机名后，如果您希望修改后的主机名在裸金属服务器关机、重启后仍然生效，需要将其写入相应的配置文件中，使之永久生效。
假设使用**hostname** 命令修改后的主机名为*new_hostname*。
1. 修改配置文件"/etc/hostname"。
   1. 执行以下命令，编辑配置文件"/etc/hostname"。 **sudo vim /etc/hostname**
      
   
   2. 将配置文件中的主机名替换为修改后的主机名*new_hostname*。
   
   3. 执行以下命令，保存并退出文件。 **:wq**
      
    
2. （可选）对于RHEL/CentOS/Fedora 6操作系统，需要修改配置文件"/etc/sysconfig/network"。
   1. 执行以下命令，编辑配置文件"/etc/sysconfig/network"。 **sudo vim /etc/sysconfig/network**
      
   
   2. 修改涉及"HOSTNAME"的参数值，将其设置为修改后的主机名*new_hostname* 。
      **HOSTNAME=** *new_hostname*
      
   
   3. 执行以下命令，保存并退出文件。 **:wq**
      
    
3. 修改配置文件"/etc/cloud/cloud.cfg"。
   1. 执行以下命令，编辑配置文件"/etc/cloud/cloud.cfg"。 **sudo vim /etc/cloud/cloud.cfg**
      
   
   2. 按需选择如下两种方法，修改配置文件。
      - 方法一：修改或添加"preserve_hostname"参数项。 如果文件"/etc/cloud/cloud.cfg"中已有参数项"preserve_hostname: false"，将其修改为"preserve_hostname: true"即可。
        如果文件"/etc/cloud/cloud.cfg"中没有该参数项，需要在"cloud_init_modules"模块前，添加语句**preserve_hostname: true**。
        
      
      - 方法二：删除或者注释如下语句。 **update_hostname**
        
       
   
   3. 执行以下命令，保存并退出文件。 **:wq**
      
    
4. 修改裸金属服务器网络配置脚本"bms-network-config.conf"。 "bms-network-config.conf"的配置参数"enable_preserve_hostname"默认为False，表示每次单板复位自动刷新主机名。将其修改为True即可关闭该功能。
   1. 执行以下命令，编辑配置脚本"bms-network-config.conf"，将参数项"enable_preserve_hostname"设置为True。 **sed -i 's/enable_preserve_hostname.\*/enable_preserve_hostname = True/g' \`find / -name bms-network-config.conf**
      
    
5. （可选）对于SUSE系列操作系统，还需要修改配置文件"/etc/sysconfig/network/dhcp"。
   1. 执行以下命令，编辑配置文件"/etc/sysconfig/network/dhcp"。 **sudo vim /etc/sysconfig/network/dhcp**
      
   
   2. 将参数项"DHCLIENT_SET_HOSTNAME"设置为no，保证每次dhcp服务不会自动分配主机名。 **DHCLIENT_SET_HOSTNAME="no"**
      
   
   3. 执行以下命令，保存并退出文件。 **:wq**
      
    
6. 执行以下命令，重启裸金属服务器。 **sudo reboot**
   
7. 执行以下命令，验证静态主机名的修改是否永久生效。 **sudo hostname**
   如果回显的内容是修改后的主机名*new_hostname*，表示主机名修改成功，永久生效。
   
 
