从puppet清单中排除节点的最佳方法

我想排除清单中的几个节点。

我读过“ 如何排除几个节点的Puppet模块? ”,但我想实现类似https://groups.google.com/forum/#!topic/puppet-users/CdeIUbMwAM4的操作 :

case $hostname { yourspecialhost: { $doit = false } default: { $doit = true } } if $doit { dowhatshouldbedoneinhere } 

由于这篇文章有点老了(2008),我想知道现在是否有更短或更干净的方法来实现同样的目标?

编辑 :我们已经试图细化,因为我们有特定的networking服务器或数据库模块。 在我们的具体情况中,我们在几年前build立了一个关于sshd的模块。

今天,我必须build立一个非常罕见的sshdfunction(和不同的二进制)的服务器。 因此,我想从sshd模块中排除这个服务器(只有这个)。

没有Hiera是否可行? 有一个比引用的语法更清晰的语法吗?

你可能想要更加细化你的分类。 例如,您的“全部捕获”模块被包含在sites.pp中定义的默认节点中,适合某些angular色(如web服务器或数据库)的模块可以包含在case语句和外部分类器中,并且特定于单个服务器的模块可以完成与hiera甚至主机名称匹配。

http://nuknad.com/2011/02/11/self-classifying-puppet-nodes/

我发现没有比引用的语法更干净的语法(至less不使用Hiera)。

所以我决定像这个问题引用。

我可以确认它的工作原理,但我宁愿干净一些。

道德:当你写一个傀儡模块时,千万不要假设它将永远适用于生产中的每台服务器。

如果我正确logging,bcfg2更好地处理这种情况。