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

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

我想从清单中排除一些节点。

我读了 ”如何排除少数节点的 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 可以更好地处理这种情况。

相关内容