fqdn 的 Puppet 事实不是 return 完全限定的域名

Puppet fact for fqdn doesn't return the fully qualified domain name

我设置了一个主机名,其中不包括提供给我的域名。然而,当它连接到我的人偶大师时,很多代码都失败了——最终我将其固定在 fqdn 事实中,没有返回完全限定的域名,而是返回了主机名。有没有办法解决?可能是 Puppet 中的错误配置或对代理的更改。

如果没有,我该如何解决?我应该创建一个新事实吗?在使用 fqdn 事实的任何地方查找并替换。

[root@a /]# hostname
a.long.hostname.with.lots.of.required.fields
[root@a /]# hostname -f
a.long.hostname.with.lots.of.required.fields.areallongexample.com
[root@a /]# facter fqdn
a.long.hostname.with.lots.of.required.fields
[root@a /]# facter hostname
a
[root@a /]# facter domain
long.hostname.with.lots.of.required.fields
[centos@a ~]$ facter networking.fqdn
a.long.hostname.with.lots.of.required.fields
[centos@a ~]$ facter networking
{
  dhcp => "192.168.0.2",
  domain => "long.hostname.with.lots.of.required.fields",
  fqdn => "a.long.hostname.with.lots.of.required.fields",
  hostname => "a",
  interfaces => {
    eth0 => {
      bindings => [
        {
          address => "192.168.0.2",
          netmask => "255.255.255.0",
          network => "192.168.0.0"
        }
      ],
      dhcp => "192.168.0.1",
      ip => "192.168.0.2",
      mac => "00:00:00:00:00:00",
      mtu => 9001,
      netmask => "255.255.255.0",
      network => "192.168.0.0"
    },
    lo => {
      bindings => [
        {
          address => "127.0.0.1",
          netmask => "255.0.0.0",
          network => "127.0.0.0"
        }
      ],
      ip => "127.0.0.1",
      mtu => 65536,
      netmask => "255.0.0.0",
      network => "127.0.0.0"
    }
  },
  ip => "192.168.0.2",
  mac => "00:00:00:00:00:00",
  mtu => 9001,
  netmask => "255.255.255.0",
  network => "192.168.0.0",
  primary => "eth0"
}

I've set a hostname which excludes a domain name I've been provided with.

不,你没有。至少如果 hostname 输出正确地模拟了实际的系统配置。您为机器配置了一个主机名,该主机名表示 与给定的域名不同

一个完全合格的域名由一系列由句点分隔的段组成 (.)。第一段是特定于机器的名称,其余部分是域名。

配置机器使得 hostname 命令 returns 完全合格的域名是有效且常见的,我发现从 Puppet 的角度来看这最容易使用。有些人更喜欢配置 hostname 命令 returns 简单主机名,这也可以工作,前提是 dnsdomainname 命令 returns 完整域。

Facter 假设已经采用了这两种方法中的一种,但是您的 hostnamehostname -f 命令的输出显示您的机器配置不同。 hostname returns 由于包含以句点分隔的段,因此看起来像 FQDN 的名称,但它不是计算机的 FQDN。这很可能不仅会给 Puppet 和 Facter 带来麻烦,这就是为什么 Facter 有理由假设机器没有按照您的方式配置。

您应该修复您的系统配置。如果机器的正确 FQDN 是 a.long.hostname.with.lots.of.required.fields.areallongexample.com 那么你应该设置那个或者简单地 a 作为它的主机名(它的含义)。这可能需要您转储当前的 Puppet 机器注册并使用新主机名重新注册。

我创建了一个名为 fqdn 的事实并更改了它的权重,它简单地运行 hostname -f。