Puppet fqdn fact未返回正确全限定域名解决方案咨询
问题根因判定
该问题不是Puppet配置错误导致,根因是Facter默认的FQDN生成逻辑和你的系统配置不匹配:Facter不会直接读取hostname -f的返回结果,而是默认读取/etc/resolv.conf中的domain字段值,和hostname命令返回的主机名拼接生成FQDN。从你提供的输出可以看到facter domain返回的是错误的域名段,因此拼接出来的FQDN不符合预期。
可直接通过Agent端配置修复,无需修改现有Puppet代码
优先选择以下两种修复方案,改动成本极低:
- 方案1(优先推荐):修改系统
/etc/resolv.conf配置,将domain字段的值调整为正确的areallongexample.com,修改完成后执行facter fqdn验证即可返回正确的全限定域名。如果你的resolv.conf由DHCP自动下发,可以修改DHCP客户端配置,禁止DHCP覆盖domain配置项。 - 方案2(无法修改resolv.conf时使用):新增自定义Facter事实覆盖默认值,在Agent端
/etc/facter/facts.d/目录下新建custom_fqdn.yaml,内容如下:
fqdn: a.long.hostname.with.lots.of.required.fields.areallongexample.com domain: areallongexample.com
自定义事实的优先级高于Facter默认生成的网络事实,配置完成后会直接覆盖原有fqdn、domain的返回值,完全兼容现有代码中所有对$fqdn变量的调用。
不建议全局替换所有调用fqdn的代码
全局替换代码的改动成本极高,还容易出现遗漏、兼容问题,优先级远低于上述两种方案,无特殊情况不要选择该方案。
内容的提问来源于stack exchange,提问作者user486670
相关产品推荐
相关产品推荐

