首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Puppet有条件地拼接列表

Puppet有条件地拼接列表
EN

Stack Overflow用户
提问于 2021-01-23 04:17:29
回答 1查看 23关注 0票数 0

如果实际安装了fail2ban,我会尝试只部署Apache jails。我有一个事实证明这是可行的。

代码语言:javascript
复制
  # 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:

代码语言:javascript
复制
Puppet : Enable apache jails: false
Puppet : Jails: [ssh, ssh-ddos, pam-generic, apache-auth, apache-badbots, apache-multiport, apache-noscript, apache-overflows]

使用apache:

代码语言:javascript
复制
Puppet : Enable apache jails: true
Puppet : Jails: [ssh, ssh-ddos, pam-generic, apache-auth, apache-badbots, apache-multiport, apache-noscript, apache-overflows]

我做错了什么?为什么在这两种情况下都附加了它?有没有更好的方法来实现这一点,而且是可扩展的?

EN

回答 1

Stack Overflow用户

发布于 2021-01-23 05:22:33

为此,我可能会使用selector expression

代码语言:javascript
复制
$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]连接的算法,但由于Puppet DSL强制变量的不变性,它们变得混乱。它使用一个变量,一个条件表达式,没有lambda迭代器函数。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65852199

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档