我想从清单中排除一些节点。
我读了 ”如何排除少数节点的 Puppet 模块?“,但我想实现类似的东西https://groups.google.com/forum/#!topic/puppet-users/CdeIUbMwAM4:
case $hostname {
yourspecialhost: { $doit = false }
default: { $doit = true }
}
if $doit {
dowhatshouldbedoneinhere
}
由于这篇文章有点旧了(2008 年),我想知道现在是否有更短或更干净的方法来实现相同的目标?
编辑:我们已经尝试过细化,因为我们有针对网络服务器或数据库的特定模块。在我们的特定情况下,我们几年前就构建了一个关于 sshd 的模块。
今天,我必须构建一个具有非常不常见的 sshd 功能(和不同的二进制文件)的服务器。因此,我想从 sshd 模块中排除此服务器(并且仅此服务器)。
没有 Hiera 可以做到吗?有没有比引用的语法更简洁的语法?
答案1
您可能希望对分类进行更细致的划分。例如,您的“全部捕获”模块将包含在 sites.pp 中定义的默认节点中,适合特定角色(如 Web 服务器或数据库)的模块可以包含在 case 语句和外部分类器中,特定于单个服务器的模块可以使用 hiera 甚至主机名匹配来完成。
http://nuknad.com/2011/02/11/self-classifying-puppet-nodes/。
答案2
我发现没有比引用的语法更清晰的语法(至少不使用 Hiera)。
因此我决定按照问题中引用的方式去做。
我可以确认它有效,但我更喜欢一些更干净的东西。
道德:当你编写一个傀儡模块时,永远不要假设它会永远适用于你生产中的每个服务器。
如果我记录正确的话,bcfg2 可以更好地处理这种情况。