Linux
使用 puppet 將現有使用者添加到組
是否可以使用 puppet 2.7.18 將現有使用者添加到組中?
我們有兩個模組,每個模組定義一個類:
- 模組“user”創建所有使用者,包括使用者 foo 和使用者 bar。
- 模組“subversion”處理各種 conf 文件並創建組 svn。
我們想將使用者 foo 添加到模組“subversion”中的組 svn。
我已經嘗試了現有功能請求中描述的成員資格參數:
group { "svn": ensure => present, gid => xxxxx; } user { "foo": group => ["svn"], membership => minimum; }
但我收到以下錯誤:
錯誤:無法從遠端伺服器檢索目錄:伺服器上的錯誤 400:重複聲明:使用者
$$ foo $$已在文件 /pathto/modules/subversion/manifests/init.pp 的第 xx 行聲明;無法在節點 myserver.example.com 上的 /pathto/modules/users/manifests/init.pp:xxx 重新聲明
這個功能已經實現了嗎?如果沒有,有沒有好的解決方法?
如果您將使用者聲明為虛擬資源,則可以使用“實現”或集合語法(使用者 <| … |>)。這是一個例子:
@user { 'foo': groups => ['somegroup'], membership => minimum, }
然後使用 then 集合語法實現該虛擬使用者:
User <| title == foo |>
在其他地方,您可以使用 plusignment 添加到該虛擬資源的參數:
User <| title == foo |> { groups +> "svn" }
使用 Puppet 虛擬資源是正確的方法 - 但如果您無法更改使用者定義並同時需要解決方法,則以下內容是可怕的和 hacky,但會起作用:
exec { 'foo somegroup membership': unless => '/bin/grep -q "somegroup\\S*foo" /etc/group', command => '/sbin/usermod -aG somegroup foo', require => User['foo'], }
本質上,我們只是檢查 somegroup 是否包含使用者 foo…如果沒有,則使用普通的 usermod 命令將其添加到 foo 所屬的現有組之外。