You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

cloud-init主机名配置与实际输出不符问题咨询

问题:cloud-init设置主机名异常原因分析

环境与配置

虚拟机配置参数

hostname:redhat-kouvas-1500-localtest
domain: test.local

Cloud Assembly中的cloud-config配置

cloudConfig: |
  #cloud-config
  preserve_hostname: false
  prefer_fqdn_over_hostname: false
  hostname: '${input.hostname}'
  fqdn: '${input.hostname}.${input.domain}'

实际执行结果

执行hostname命令输出

redhat-kouvas-1500-localtest log]# hostname
redhat-kouvas-1500-localtest.test.local

查看/var/lib/cloud/data/set-hostname文件内容

{
 "fqdn": "redhat-kouvas-1500-localtest.test.local",
 "hostname": "redhat-kouvas-1500-localtest"
}

查看/var/lib/cloud/data/previous-hostname文件内容

redhat-kouvas-1500-localtest.test.local[root@redhat-kouvas-1500-localtest log]#

疑问

明明设置了prefer_fqdn_over_hostname: false,为何cloud-init最终将主机名设置为FQDN而非指定的短主机名?


cloud-init官方文档相关内容

cc_set_hostname模块说明

  • 内部名称:cc_set_hostname
  • 执行频率:每个实例仅执行一次
  • 支持的发行版:所有
  • 配置项说明:
    • preserve_hostname:布尔值,设为true时不会修改主机名,默认值false
    • hostname:字符串,要设置的短主机名
    • fqdn:字符串,要设置的完全限定域名
    • prefer_fqdn_over_hostname:布尔值,设为true时如果配置了fqdn则使用fqdn作为主机名;设为false时使用hostname配置的短主机名;未设置时行为取决于具体发行版

示例配置

preserve_hostname: true
# --- 示例2 ---
hostname: myhost
fqdn: myhost.example.com
prefer_fqdn_over_hostname: true

原因分析

从/var/lib/cloud/data/set-hostname的内容来看,cloud-init已经正确解析了配置中的短主机名和FQDN。实际主机名显示为FQDN的问题,并非cloud-init配置失效,而是由以下两点导致:

  1. 发行版自身行为:RHEL/CentOS这类发行版在配置了FQDN后,hostname命令默认会返回FQDN而非短主机名,这是系统的显示逻辑,不是cloud-init的错误。
  2. 配置生效验证:检查/etc/hostname文件,如果内容是redhat-kouvas-1500-localtest,说明cloud-init已经按照配置完成了短主机名的设置,hostname命令的输出只是系统优先展示FQDN的表现。

另外,previous-hostname文件记录的是cloud-init执行前的主机名或过程中临时值,不代表最终生效的配置。

如果需要让hostname命令返回短主机名,可以通过hostnamectl set-hostname --static redhat-kouvas-1500-localtest命令强制设置静态短主机名,或者修改对应发行版的主机名配置文件。

内容的提问来源于stack exchange,提问作者Megazord

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.20 17:09:33