2017-05-04 181 views
0

一個單一的虛擬資源Multipe用戶角色對於不同的節點上管理用戶,我使用類似的/定製模塊中木偶,如下所示:與木偶

puppet_users_with_virtual_resources

在該示例中,有兩個角色。如果一個角色已分配給用戶,則無法爲用戶分配額外的角色(因爲虛擬資源已經創建)。

就我而言,我有不同的角色(如sudo,web-dev,mysql),每個角色都將特定的組分配給用戶。

但是,如前所述,我只能將一個單一角色分配給用戶。如果我爲用戶添加另一個角色,用戶仍然只有一個角色(因爲具有來自一個角色的組的用戶已分配給用戶並且已創建資源)。

我該如何解決這個問題,以便我可以爲一個用戶分配無限的角色?

+0

爲什麼你需要一個虛擬資源來收集用戶角色? –

+0

當我需要用戶時webserver和mysql,我需要爲兩者創建用戶(不可能,因爲資源只能指定一個)。通過虛擬資源,我可以在不同的「地方」定義這個用戶。 您對如何解決我的問題有更好的想法嗎? – Studentus

回答

0

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

你可以也可以通過編程來做很多事情,例如根據組成員資格定義標籤。