Puppet:命名空间如何处理虚拟资源、类和定义



新的木偶用户,试图将我的头包裹在命名空间等方面。

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

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 User::Something['admin'] 的东西realize用户nodes.pp

问题2:如何让类user::unixuser了解login函数?这是通过class user::unixuser inherits user::functions来完成的,还是我应该include user::functionsclass {'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,
  }
  ...
}

相关内容

最新更新