如何让 Puppet 根据变量生成我的 /etc/security/access.conf?

如何让 Puppet 根据变量生成我的 /etc/security/access.conf?

我希望能够动态地说明哪些本地用户可以访问服务器。这应该会生成一个 /etc/security/access.conf 文件,如下所示:

+ : root : ALL
# Next lines should be generated dynamically based on a variable
+ : user1 : ALL
+ : user2 : ALL
+ : user3 : ALL
# Until this line
- : ALL : ALL

我知道我可以在 access.conf 模板中使用单个变量,例如放置一行:

+ : <%=local_accepted_user1%> : ALL

但是我怎样才能使用数组让多个用户使用它呢?

答案1

为了允许传递数组和字符串,需要执行两个步骤。我们在 puppet 中的多个模板中使用了它。

  1. 确保传入的变量变成数组
  2. 迭代数组
+ : root : ALL
# Next lines should be generated dynamically based on a variable
<%
    if @users.class == String then
      real_users = [@users]
    else
      real_users = @users
    end

    # flatten ensures that any inline arrays are also processed by element
    real_users.flatten.each { |cur_user|
-%>
+ : <%= @cur_user -%> : ALL
<% 
    }
-%>
# Until this line
- : ALL : ALL

相关内容