有没有简单的方法来返回应用到节点的顶级类。 我的意思是包含在节点定义或ENC等价物中的类例如下面的示例节点,我想为某个主机返回'return :: me'和'return :: me2',而不是'dontreturn ::我'
class return::me { include dontreturn::me } node "somehost" { include return::me include return::me2 }
我发现/var/lib/puppet/state/classes.txt包含了应用于该节点的类的完整列表,但是包含了顶级类包含的任何其他类。
有没有办法用puppet faces命令来获取这些数据? 我怀疑“傀儡节点”可能是有用的,但我一直无法得到它回报我什么。
file { '/var/lib/puppet/state/classes.txt': content => inline_template("<%= Puppet::Node.indirection.find(fqdn).classes.join('\n') + '\n' %>"), }
至less与最近的2.6.x和2.7.x一起工作(没有尝试过早期版本)。
鉴于这使用内部的木偶API,我不能保证这个技巧的长寿。 不幸的是没有比这更好的了。
我们曾经有一个使用Puppet::Node.find(fqdn).classes的puppet 2.6技巧,但是打破了2.7。
我最终得到了“傀儡节点”的工作。 在“myhost”机器上运行时,下面的命令正在工作。 它看起来像用于“节点”块定义的节点以及从ENC进入的定义。
puppet node find 'myhost' --render-as yaml --terminus rest | grep " - "