Puppet

时间:2017-05-04 22:14:07

标签: puppet hiera

为了管理不同节点上的用户,我在Puppet中使用类似/自定义模块,如下所示:

puppet_users_with_virtual_resources

在示例中,有两个角色。如果已为用户分配了一个角色,则无法为用户分配其他角色(因为已创建虚拟资源)。

就我而言,我有不同的角色(如sudo,web-dev,mysql),每个角色都会为用户分配特定的组。

但正如已经提到的,我只能为用户分配一个角色。如果我向用户添加另一个角色,则该用户仍将只有一个角色(因为具有来自一个角色的组的用户已经分配给用户并且已创建资源)。

如何解决这个问题,以便为一个用户分配无限的角色?

1 个答案:

答案 0 :(得分:0)

我通常通过在集中位置定义虚拟用户(例如profile::users)并在Hiera中存储用户/组信息来解决这个问题。然后代码中需要用户的每个地方都可以通过相应的标签实现它们。这假设您所关注的所有服务器上都存在必需的组。

这是一个最小的例子。

他们的数据在Hiera中定义:

# common.yaml
---
profile::users::users:
  auser:
    groups: ['webserver', 'mysql']
    tags:   ['users::webserver', 'users::mysql']
  anotheruser:
    groups: ['webserver']
    tags:   ['users::webserver']

它们在一个共同的档案中声明:

class profile::users (
  $users,
) {
  $users.each |$username, $info| {
    @user { $username:
      ensure => present,
      groups => $info['groups'],
      tags   => $info['tags'],
    }
  }
}

他们在需要的地方得以实现:

class role::webserver {
  include profile::base
  include profile::webserver

  User <| tag == 'users::webserver' |>
}

您也可以通过编程方式执行大量操作,例如:根据组成员资格定义标签。