【问题标题】:Puppet fact for fqdn doesn't return the fully qualified domain namefqdn 的 Puppet fact 不返回完全限定的域名
【发布时间】:2021-09-18 08:52:56
【问题描述】:

我设置了一个主机名,其中不包括我提供的域名。然而,当它连接到我的 puppet master 时,很多代码都失败了——最终我把它归结为 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"
}

【问题讨论】:

  • 能否包含“facter fqdn”、“facter network.fqdn”和“facter network”的输出(删除您不想公开的任何内容)。这是提供facter rubygems.org/gems/facter的gem 我正在查看创建fqdn的代码(该页面上有一个链接),在Linux上它看起来只是获取主机名和域名并将它们连接在一起创建networking.fqdn,然后添加一个别名fqdn,让您可以直接访问它。
  • 我现在就添加这些。

标签: puppet


【解决方案1】:

我设置的主机名不包括我提供的域名。

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

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

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

Facter 假定已采用这两种方法之一,但您的 hostnamehostname -f 命令的输出显示您的机器配置不同。 hostname 返回一个看起来像 FQDN 的名称,因为它包含以句点分隔的段,但它不是机器的 FQDN。这很可能会给 Puppet 和 Facter 以外的人带来麻烦,这就是为什么 Facter 假设机器没有按照您的方式配置是合理的。

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

【讨论】:

  • 我不能这样做,主机名/fqdn 可以具有的字符数存在物理限制。我获得了一个我无法控制的长根域,并且主机有一个“主机名”(或 fqdn),其中包含元素(用点分隔)来分解它们的目的和功能(由 puppet 控制)。 Dnsdomainname 将始终返回第一个点之后的所有内容,该点 不是 我已分配的 root53 域(在这种情况下:[centos@a ~]$ dnsdomainname long.hostname.with.lots.of .required.fields.areallongexample.com)。
  • @keeer,同样,您描述的命名配置既不是标准的,也不是 Puppet 支持的。正如我所说,它也可能在其他地方给你带来麻烦。如果您想要一个由分隔段组成的简单主机名,请选择不同的分隔符,例如连字符 (-)。
【解决方案2】:

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

【讨论】:

    猜你喜欢
    • 2010-09-20
    • 2014-08-12
    • 2023-03-15
    • 2015-05-11
    • 2011-06-21
    • 1970-01-01
    • 1970-01-01
    • 2014-05-28
    • 1970-01-01
    相关资源
    最近更新 更多