是否可以在puppet节点类包含中继承继承?

时间:2014-09-17 13:03:31

标签: class inheritance include puppet

在阅读了多个样式指南并尝试在我的节点定义(as suggested by puppet labs)中不使用继承之后,我想知道在不使用继承的情况下在puppet中包含类的常用方法。

我一直在尝试使用我的节点定义,但它似乎不起作用:

# in module 'baseclass'
# baseclass.pp
class baseclass {
  include xclass
  include yclass
  include zclass
}

# servernode01.pp
node 'servernode01' {
  include baseclass
} 

其中xclassyclasszclass是功能性木偶类,并将它们包含在节点servernode01中会产生所需的状态(即资源应用于节点)

我的问题是:

  1. 在类中包含类是继承的一个很好的替代方法吗?
  2. 我使用的方法中是否存在一些问题作为继承的替代方法?
  3. 我问第二个问题,因为包含baseclass的节点似乎没有收到xclassyclasszclass中定义的资源。

    我的最终目标是建立一个基类来实现我指定的最低要求。

2 个答案:

答案 0 :(得分:3)

  1. 是的,组合比Puppet中的继承更好
  2. 你的例子应该可以正常工作
  3. include baseclass的替代方案是class { 'baseclass': }。如果你想使用参数,你需要后者,并且考虑到你可以多次使用include而不是class语法,因为木偶会抱怨重复的类定义。

答案 1 :(得分:3)

官方傀儡文件明确指出,继承只应该真正使用"谨慎"。他们实际上只列出了两种情况:

  • 当您要覆盖父类
  • 中定义的资源的参数时
  • 如果要从标准参数值的参数类继承

请参阅http://bit.ly/1r1RO0K

所以是的,这显然更好,即使有官方的祝福:)