为了管理不同节点上的用户,我在Puppet中使用类似/自定义模块,如下所示:
puppet_users_with_virtual_resources
在示例中,有两个角色。如果已为用户分配了一个角色,则无法为用户分配其他角色(因为已创建虚拟资源)。
就我而言,我有不同的角色(如sudo,web-dev,mysql),每个角色都会为用户分配特定的组。
但正如已经提到的,我只能为用户分配一个角色。如果我向用户添加另一个角色,则该用户仍将只有一个角色(因为具有来自一个角色的组的用户已经分配给用户并且已创建资源)。
如何解决这个问题,以便为一个用户分配无限的角色?
答案 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' |>
}
您也可以通过编程方式执行大量操作,例如:根据组成员资格定义标签。