我混合了 CentOS、5.8、5.7、6.1、6.3、4.7 Ubuntu、Debian、服务器。我希望他们所有人都安装了 nrpe。我面临的问题是,当我编写 puppet 代码以确保 packe nrpe 时,它在 Centos 6+ 上运行良好,但是当它在 centos 5.8 上运行时,包名是 nrpe-nagio,而不是 nrpe .. 我试过以这种方式执行此操作,但无法执行所需的检查。
package { "nrpe":
ensure => "installed",
name => $operatingsystem ? {
Ubuntu => "nagios-nrpe-server",
CentOS => "nrpe",
{
/^5/: {
package { "nagios-nrpe":
ensure => "installed", }
}
}
Debian => "nagios-nrpe-server",
}
}
我怎样才能对我需要的东西进行嵌套检查?
谢谢
内联、嵌套的 case 语句是一种不好的方法,在 Puppet 中不鼓励这样做(请参阅Puppet Lint 文档)。
更好的方法是这样(我猜想
$::lsbdistrelease
因为我手头没有 RH 系统 - 你应该运行facter
以确定为你提供主要版本的正确事实)。说明(在适当的地方链接到 Puppet Lint):
::
你可以使用 facter 和一些 if/else 条件来告诉 Puppet 你想将哪个类应用到每个 CentOS 版本。
示例:http ://docs.puppetlabs.com/learning/variables.html#case
(只需使用您的操作系统版本,而不是提供的示例中的操作系统)。