3

新的 puppet 用户,试图围绕名称空间等等。

我目前正在开发一个名为user. 它在 and 中有一个类unixuser和一个unixgroup类。我将把我的问题限制在创建用户上。unixuser.ppunixgroup.pp

init.pp目前仅包含:

class user {
  class {'user::unixuser': }
  class {'user::unixgroup': }

  # Create groups before creating users
  Class['user::unixgroup'] -> ['user::unixuser']
}

而我只想定义虚拟资源unixuser.ppunixgroup.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使用nodes.pp类似realize User::Something['admin'].

问题 2:应该如何让类user::unixuser知道该login功能?这是通过拥有class user::unixuser inherits user::functions或应该拥有include user::functionsclass {'user::functions': }或......来完成的吗?

问题 3:基于问题 2,@somethinguser::unixuser班级与functions.pp.

我试图尽我所能提出这个问题,但如果它仍然有点混乱,我道歉。:)

4

1 回答 1

1

首先,如果将用户分配到组,则该组是自动需要的,因此您不需要以下内容:

  # 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,
  }
  ...
}
于 2013-01-18T05:00:26.040 回答