2014-12-19 47 views
0

我是傀儡世界的新手。我必須創建一個模塊來創建多個用戶,參數化。在pupet模塊中創建多個參數化用戶

我已經創建了一個模塊,如下所示。不知道是否適當。

class users() { 
    group { "sysadmin": 
     ensure => present, 
    } 

    define users::add ($username, $groupname= "" ,$shell= "",$ensure, $login= false) { 
     user { "$username": 
      ensure => "$ensure" , 
      groups => "$groupname" , 
      shell => "$shell" , 
      require => Group["sysadmin"] , 
     } 
    } 
} 

我必須用上面的代碼創建多個用戶。如何以及在哪裏創建。我可以在同一個文件調用?(init.pp)

我試圖在同一個文件

class users::add { 
    users::add { "user1": username => "myuser1" , groupname => "sysadmin" , shell => "/bin/bash" , ensure => present , login => true } 
    users::add { "user2": username => "myuser2" , groupname => "sysadmin" , shell => "/bin/bash" , ensure => present , login => true } 
} 

它不工作下面附加線。

任何幫助是非常可觀的。提前致謝 。

+0

您顯然未能包含類'users :: add'。這可能是你問題的根源。化妝品:1.不要調用define'users :: add'。將其稱爲'users :: user'。 2.不要將該類與定義調用相同。 3.不要將定義嵌套在'class users'中。調用它'users :: user'並在'modules/users/manifests/user.pp'中聲明它。 – 2014-12-19 10:31:48

回答

0

你應該更好地利用define代替class這樣的多個動作:

define users::account::add(
$userid, 
$fullname, 
$groups, 
$shell, 
$password = '', 
$home_path = hiera('global::home_path') 
) { 
group { $name: 
    gid  => $userid, 
    ensure => 'present', 
} -> 
user { $name: 
    uid  => $userid, 
    gid  => $userid, 
    comment => $fullname, 
    home  => "${home_path}/${name}", 
    shell  => $shell, 
    password => $password, 
    ensure => 'present', 
    groups => $groups, 
} 
} 

這個定義可以直接使用一次或幾次:

users::account::add { 'root': 
userid  => 0, 
groups  => [ ], 
fullname => 'kroot', 
shell  => "${global::bash}", 
password => '', 
home_path => '', 
} 
users::account::add { 'raven': 
userid  => 1001, 
groups  => [ "${global::def_group}" ], 
fullname => 'super admin', 
shell  => "${global::bash}", 
password => '*', 
} 
users::account::add { 'admin': 
userid  => 1002, 
groups  => [ "${global::def_group}" ], 
fullname => 'other admin', 
shell  => "${global::bash}", 
password => '*', 
} 

多漂亮的變體使用這個定義與hiera:

class users::accounts { 
create_resources('add', hiera('users')) 
} 

while hi eradata應該包含用戶數據:

{ 
"users": { 
    "root": { 
    "userid": "0", 
    "groups": [ ], 
    "fillname": "kroot", 
    "shell": "/bin/sh", 
    "password": "", 
    "home_path": "" 
    }, 
    "raven": { 
    "userid": "1001", 
    "groups": [ "root", "wheel" ], 
    "fillname": "super admin", 
    "shell": "/usr/local/bin/bash", 
    "password": "" 
    }, 
    "admin": { 
    "userid": "1002", 
    "groups": [ "root", "wheel" ], 
    "fillname": "other admin", 
    "shell": "/usr/local/bin/bash", 
    "password": "" 
    } 
} 
} 
+0

非常感謝。 – user1726453 2015-06-19 18:16:42