class - Puppet:命名空间如何与虚拟资源、类和定义一起工作?

标签 class namespaces virtual puppet definitions

新的 puppet 用户,试图围绕 namespace 等等。

我目前正在开发一个名为 user 的模块。 .它有一个 unixuser类和 unixgroup类(class) 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 中。为了可读性。

问题一:应该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'] .

问题二:上课应该怎么办user::unixuser请注意 login功能?这是通过拥有 class user::unixuser inherits user::functions 来完成的吗?或者我应该有include user::functionsclass {'user::functions': }或者...?

问题 3:根据问题 2,@something 的位置是什么?当user::unixuser类与 functions.pp 配合得很好?

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

最佳答案

首先,如果用户被分配到一个组,该组是自动需要的,所以你不应该需要以下内容:

  # 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,
  }
  ...
}

关于class - Puppet:命名空间如何与虚拟资源、类和定义一起工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10583992/

相关文章:

javascript - RequireJS: "return this;"并且不是全局的

c# - 嵌套在类中的扩展方法

c++ - 继承、模板和虚函数(这可能会变得困惑)

c++ - 根据构造函数中的参数创建内部对象?

python 无我

c# - 如何最好地为自定义类型实现 Equals?

java - 从目录中检索 .class 文件列表

c++ - C++ 中的嵌套命名空间

c++ - 阻止虚拟继承

javascript - JS ES6 类 ToString() 方法即使在 Babel 或 Chrome 中也不起作用