新的木偶用户,试图将我的头包裹在命名空间等方面。
我目前正在研究一个名为 user
的模块。它在unixuser.pp
和unixgroup.pp
有一个unixuser
类和一个unixgroup
类。我将把我的问题限制在用户的创建上。
init.pp
目前仅包含:
class user {
class {'user::unixuser': }
class {'user::unixgroup': }
# Create groups before creating users
Class['user::unixgroup'] -> ['user::unixuser']
}
在unixuser.pp
和unixgroup.pp
中,我只想定义虚拟资源。执行此操作的函数应functions.pp
以提高可读性。
问题 1:functions.pp
应该只包含定义还是应该将定义放在类中?所以在代码中,functions.pp
应该包含以下内容:
class user::functions {
define login ($uid, $gid) {
user { $title:
ensure => present,
uid => $uid,
gid => $gid,
}
}
}
或者define login
不应该在user::functions类中?如果是这样,define
线应该是define user::login
还是别的什么?
更进一步,unixuser.pp
将包含类似于以下(不完整(节的内容:
class user::unixuser {
@something { 'admin':
uid => 1000,
gid => 1000,
}
}
如果所有这些都完成,那么我将用类似 realize User::Something['admin']
的东西realize
用户nodes.pp
。
问题2:如何让类user::unixuser
了解login
函数?这是通过class user::unixuser inherits user::functions
来完成的,还是我应该include user::functions
或class {'user::functions': }
或......?
3:基于问题2,当user::unixuser
班与functions.pp
很好地配合时,什么代替了@something
?
试图尽我所能提出这个问题,但如果它仍然有点混乱,我道歉。 :)
如果用户被分配到一个组,该组是自动需要的,所以你不需要以下内容:
# Create groups before creating users
Class['user::unixgroup'] -> ['user::unixuser']
functions.pp看起来不错,在init.pp中尝试以下操作:
class user {
include user::functions
include user::unixgroup
include user::unixuser
}
和Unixuser.pp:
class user::unixuser {
login { 'admin':
uid => 1000,
gid => 1000,
}
...
}