我有一个模块中的类:
# File: modules/selinux/tools.pp
class selinux::tools {
$packages = ['policycoreutils-python',]
package { $packages:
ensure => installed
}
}
然后,我的默认节点:
# File: manifests/nodes/default.pp
node default {
if $selinux {
include selinux::tools
}
}
我重新启动了puppetmaster
代理。然而,尽管事实并非如此,puppet
但包还是安装在了节点上:selinux
$ facter -p selinux
false
我在这里遗漏了什么?
答案1
事实上,对于 Puppet 来说,“true”或“false”selinux
只是一个字符串,它不会将字符串的内容视为布尔值。正确的做法是将其与另一个字符串进行比较:
if $selinux == "true" {
include selinux::tools
}
有功能请求改变行为以便 Facter 布尔值被正确地处理为 Puppet 布尔值。