Puppet:节点名称似乎依赖于反向 DNS?

Puppet:节点名称似乎依赖于反向 DNS?

我似乎在理解如何让它工作方面遇到了一点问题。我正在构建一台新服务器,它位于办公室 NAT 后面,它的反向 DNS 映射到office.mydomain.com,但我希望这台机器是ns2.mydomain.com为了 puppet 而存在的。

nodes.pp 片段:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits basenode {
  info('office.mydomain.com')
}

客户端上的“puppet.conf”如下:

[main]
#was node_name=ns2.mydomain.com
#was fqdn=ns2.mydomain.com
certname=ns2.mydomain.com
node_name=cert

我的服务器上的系统日志报告:

Sep 16 22:59:12 support puppetmasterd[2800]: Host is missing hostname and/or domain: office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: (Scope(Node[office.mydomain.com])) office.mydomain.com
Sep 16 22:59:12 support puppetmasterd[2800]: Compiled catalog for office.mydomain.com in 0.03 seconds
Sep 16 22:59:12 support puppetmasterd[2800]: Caching catalog for ns2.mydomain.com

我怎样才能让它抓取配置ns2.mydomain.com而不做这样的事情:

node 'ns2.mydomain.com' inherits basenode {
  info('ns2.mydomain.com')
}

node 'office.mydomain.com' inherits 'ns2.mydomain.com' {
  info('office.mydomain.com')
}

更新:这个问题似乎也导致了其他问题。例如,如果我info("$fqdn")在机器后面时office.mydomain.comfqdn 事实是空的,以及$operatingsystem。这几乎就像事实没有被正确发现一样。可能存在 NAT 问题吗?有什么建议可以追踪此问题的原因吗?

答案1

啊啊,Puppet 主机名检测。真是一场噩梦……

默认情况下,将使用什么名称来查找node使用哪个定义是基于 fqdn 事实的内容。什么实际上映射到取决于一些不同的事情,是的,反向 DNS 是其中之一 - 而且它比机器自己的主机名更受欢迎!

但是,此名称(通常)仅适用于证书生成时。您实际上误用了变量node_name——它应该设置为“cert”或“facter”之一。该fqdn参数也已弃用。

实际上要做的就是将certname客户端上的参数设置为您要使用的节点名称,然后设置node_namecert(或者直接忽略,因为这cert是默认值)。这将从客户端提供的证书的 CN 中获取节点名称,并且参数certname确保将其设置为合理的名称,而不是 facter 自行决定的名称。不幸的是,由于您已经创建了“错误”的证书,因此您需要rm -rf /var/lib/puppet/ssl在设置配置后重新生成这些证书(在客户端上并重新运行 Puppet),以便创建和使用正确的证书。

如果这一切听起来有点复杂,那您是对的——确实如此。欢迎来到 Puppet。

答案2

我似乎运气不错(尽管还有一些我想看的测试用例),在编辑中将/etc/hosts所需的 fqdn 列在 127.0.0.1 下作为第一个选项。它似乎可以正确检测/传递事实。虽然我似乎仍然需要创建一个名为的节点office.mydomain.com来继承我想要的节点。

相关内容