我通常通過在集中的地方定義虛擬用戶(例如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