我通常通过在集中的地方定义虚拟用户(例如profile::users
)并在Hiera中存储用户/组信息来解决这个问题。然后在需要用户的代码中的每个地方都可以通过相应的标签来实现它们。这假定尽管所有您关心的服务器上都存在必需的组。
下面是一个简单的例子。
他们的数据在Hiera定义:
class profile::users (
$users,
) {
$users.each |$username, $info| {
@user { $username:
ensure => present,
groups => $info['groups'],
tags => $info['tags'],
}
}
}
他们意识到,他们需要的地方:
# common.yaml
---
profile::users::users:
auser:
groups: ['webserver', 'mysql']
tags: ['users::webserver', 'users::mysql']
anotheruser:
groups: ['webserver']
tags: ['users::webserver']
他们是在一个共同的轮廓宣布
class role::webserver {
include profile::base
include profile::webserver
User <| tag == 'users::webserver' |>
}
你可以也可以通过编程来做很多事情,例如根据组成员资格定义标签。
为什么你需要一个虚拟资源来收集用户角色? –
当我需要用户时webserver和mysql,我需要为两者创建用户(不可能,因为资源只能指定一个)。通过虚拟资源,我可以在不同的“地方”定义这个用户。 您对如何解决我的问题有更好的想法吗? – Studentus