用于将数据附加到本地范围中的变量的模式

时间:2012-10-02 12:46:10

标签: ruby puppet

我正在尝试修改Centrify Express的木偶模块,它与Active Directory集成。

我想基于每个节点将用户附加到允许列表,E.G:

$centrifydc_groups_allow = ['admins', 'users']

然后在我的模板中,按照以下方式做一些事情:

<% scope.lookupvar('centrifydc::groups_allow').each do |val| -%>
<%= val %>
<% end -%>

我正在寻找一种清晰一致的方法来定义访问配置文件,然后进行单个节点调整,添加更多应该具有访问权限的条目。

怎么做?

1 个答案:

答案 0 :(得分:1)

你有+ =运算符附加到puppet中的数组。

$centrifydc_groups_allow = ['admins', 'users']
$centrifydc_groups_allow += ['webusers']

此外,如果您使用stdlib module,它会实现许多有用的函数来处理数组。

例如,如果存在风险,您可以在数组中从不同的pp重复自己,您可以在追加之前进行测试:

$centrifydc_groups_allow = ['admins', 'users']
if member($centrifydc_groups_allow,'webusers') == false {
  $centrifydc_groups_allow += ['webusers']
}

此外,您还有一个合并数组的合并函数,通过scope_function_merge可以在模板中使用它而不是附加到数组,具有默认数组和为每个节点/类型/等重写的自定义数组。