Puppet 条件连接列表
如果实际安装了Apache,我尝试只部署fail2ban Apache监狱。我有一个事实证明这是有效的Puppet 条件连接列表,puppet,Puppet,如果实际安装了Apache,我尝试只部署fail2ban Apache监狱。我有一个事实证明这是有效的 # fail2ban $jails = [ 'ssh', 'ssh-ddos', 'pam-generic' ] + if $f2b_enable_apache { ['apache-auth', 'apache-badbots', 'apache-multiport', 'apache-noscript', 'apache-overflows'] }
# fail2ban
$jails = [
'ssh', 'ssh-ddos',
'pam-generic'
] + if $f2b_enable_apache { ['apache-auth', 'apache-badbots', 'apache-multiport', 'apache-noscript', 'apache-overflows'] }
notify{"Enable apache jails: ${f2b_enable_apache}":}
notify{"Jails: ${jails}":}
class { 'fail2ban':
package_ensure => 'latest',
jails => $jails
}
当我运行它时,我会得到以下输出
没有apache:
Puppet : Enable apache jails: false
Puppet : Jails: [ssh, ssh-ddos, pam-generic, apache-auth, apache-badbots, apache-multiport, apache-noscript, apache-overflows]
使用apache:
Puppet : Enable apache jails: true
Puppet : Jails: [ssh, ssh-ddos, pam-generic, apache-auth, apache-badbots, apache-multiport, apache-noscript, apache-overflows]
我做错了什么?为什么在这两种情况下都附加了它?有没有更好的可扩展方法来实现这一点?我可能会为此使用:
$jails = $f2b_enable_apache ? {
true => ['ssh', 'ssh-ddos', 'pam-generic', 'apache-auth', 'apache-badbots', 'apache-multiport', 'apache-noscript', 'apache-overflows'],
false => ['ssh', 'ssh-ddos', 'pam-generic'],
}
这里确实有使用
Array[String]
串联的算法,但是由于伪DSL强制变量的不变性,这些算法变得很混乱。这使用一个变量、一个条件表达式,并且没有lambda迭代器函数。一个问题是,true/false事实不是bool,而是字符串“true”或“false”。。。