Hiera用户pipe理的最佳方式

我目前正试图移动我们的木偶设置,以进一步使用Hiera。 关于这一点,我想用Hiera创build用户,但是在层次结构中移动时如何做到这一点,存在一些问题。

这个场景是我想要一个包含在每个安装中的基本用户。 另外,我有时需要为一些不同的节点子集添加一些特定的用户,可能是某些数据中心或某些节点特有的。

所以我想了下面的设置:

hiera.yaml:

:hierarchy: - "nodes/%{::trusted.certname}" - "datacenter/${::datacenter}" - "common" 

users.pp:

 class profile::users { $user_accounts = hiera('user_accounts') create_resources(user, $user_accounts) } 

和common.yaml:

 user_accounts: bob: comment: "Bob" managehome: true 

然后上升到层次结构。 我看到的主要问题是:

  • 我如何为每个用户实现默认属性? 例如,在这个例子中,我想为所有用户设置managehome: true ,而不是每次都明确地写入。 不过,我可能想要禁用它。
  • 如果在层次结构中有更多的user_accounts ,它会覆盖来自common.yaml的user_accounts散列,所以我需要复制条目。 我偶然发现了Hiera的深度合并 ,但不知道这是实际使用还是最佳实践。 此外,它不会解决第一个问题,我需要在merge_behavior中设置merge_behavior,我想避免。
  • 我怎么能在这里为每个用户插入ssh密钥? 最好的解决scheme是将ssh密钥作为属性添加到用户帐户。

那么,有没有人有一个洞察用户pipe理是如何很好地完成与木偶? 谢谢 :)

在types定义中为每个用户实现默认属性:

 define user($managehome = true) { ... } 

是的,你需要使用合并,而不是在hiera数据中指定它,使用hiera_array函数来查找你想要的数据。

SSH密钥只是数据集中的另一个属性,您的usertypes应在系统上正确设置。