我似乎在理解如何让它发挥作用时遇到了一些问题。我有一个新服务器,我正在办公室 NAT 后面构建,它的反向 dns 映射到office.mydomain.com
,但我希望这台机器是ns2.mydomain.com
为了傀儡。
节点.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.com
时 fqdn 事实是空的,以及$operatingsystem
. 它几乎就像事实没有被正确发现。可能有NAT问题吗?是否有任何建议来追踪导致此问题的原因?
啊,Puppet 主机名检测。什么样的恶梦...
默认情况下,将使用什么名称来查找
node
要使用的定义是基于 fqdn 事实的内容。实际映射到的内容取决于一些不同的东西,是的,反向 DNS 就是其中之一——它比机器自己的主机名更受欢迎!但是,此名称(通常)仅适用于证书生成时。您实际上是在滥用该
node_name
变量——它应该设置为“cert”或“facter”之一。该fqdn
参数也已弃用。您真正想要做的是将
certname
客户端上的参数设置为您要使用的节点名称,然后设置node_name
为cert
(或将其省略,因为这cert
是默认设置)。这将从客户端提供的证书的 CN 中获取节点名称,并且该certname
参数确保将其设置为合理的值,而不是任何因素决定自己提出的任何内容。不幸的是,由于您已经创建了“错误”的证书,因此您需要rm -rf /var/lib/puppet/ssl
在设置配置后重新生成这些证书(在客户端上并重新运行 Puppet),以便创建和使用正确的证书。如果这一切听起来有点复杂,那你是对的——确实如此。欢迎来到木偶。
我似乎很幸运(尽管我仍然想查看一些测试用例)在编辑
/etc/hosts
以将 127.0.0.1 下的所需 fqdn 作为第一个选项列出。它似乎正在正确地检测它/传递事实。虽然看起来我仍然需要创建一个名为office.mydomain.com
继承我想要的节点的节点。