我似乎遇到了一些问题,理解如何使这个工作。 我正在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_name
variables – 它应该被设置为'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了我想要的节点。