木偶:节点名称似乎依赖于反向dns?

我似乎遇到了一些问题,理解如何使这个工作。 我正在build立一个新的服务器,坐在办公室的NAT后面,它的反向DNS映射到office.mydomain.com ,但是我想让这台机器成为ns2.mydomain.com

nodes.pp snippet:

 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的configuration没有这样做:

 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.com后面的fqdn事实是空的,以及$operatingsystem 。 它几乎像事实没有被正确地发现。 有没有NAT问题? 有没有任何build议来追踪这个问题的原因?

Aaah,Puppet主机名检测。 什么样的恶梦…

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

但是,该名称(通常)仅适用于证书生成时间。 你实际上在滥用node_namevariables – 它应该被设置为'cert'或'facter'之一。 fqdn参数也被弃用。

实际上你想要做的是将客户机上的certname参数设置为要使用的节点名称,然后将node_name设置为cert (或者将其忽略,因为cert是默认值)。 这将从客户端提供的证书的CN节点中获取节点名称,并且certname参数确保将其设置为某种合理的内容,而不是任何因素决定自行提出。 不幸的是,由于您已经创build了“错误”的证书,所以您在设置configuration后需要重新生成这些证书(客户端上的rm -rf /var/lib/puppet/ssl并重新运行Puppet) ,以便正确的证书被创build和使用。

如果这听起来有些复杂,那么你是对的 – 就是这样。 欢迎来到木偶。

我似乎在编辑/etc/hosts有好运气(尽pipe还有一些我想看到的testing用例),作为第一个选项,列出了127.0.0.1下所需的fqdn。 这似乎是正确的检测/传递事实。 尽pipe看起来我仍然需要创build一个名为office.mydomain.com的节点,它inheritance了我想要的节点。