Puppet:名称空间如何与虚拟资源,类和定义一起使用?

时间:2012-05-14 13:09:47

标签: class namespaces virtual puppet definitions

新木偶用户,试图绕着名字空间等等。

我目前正在开发一个名为user的模块。它在unixuserunixgroup中有unixuser.pp个班级和unixgroup.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的{​​{1}}用户realize User::Something['admin']。{/ p>

问题2:如何让班级user::unixuser了解login功能?这是通过class user::unixuser inherits user::functions完成还是应该include user::functionsclass {'user::functions': }或......?

问题3:根据问题2,当@something班级与user::unixuser很好地合作时,functions.pp的位置是什么?

我试图尽我最大的能力来提出这个问题,但如果它仍然有点乱,我道歉。 :)

1 个答案:

答案 0 :(得分: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,
  }
  ...
}