如何在Puppet中将参数传递给另一个类?

如何在Puppet中将参数传递给另一个类?,puppet,Puppet,我正在使用Puppet 4,我想知道如何将参数传递给另一个类: 我有一个自定义资源: class system::classA { define myresource ($param1, $param2) { include system::classB } } class system::classB { file "${param1}"{ ensure => present } } 我从另一个模块调用我的资源,比如 system::classA::m

我正在使用Puppet 4,我想知道如何将参数传递给另一个类:

我有一个自定义资源:

class system::classA {
  define myresource ($param1, $param2) {
    include system::classB
  }
}

class system::classB {
  file "${param1}"{
    ensure => present
  }
}
我从另一个模块调用我的资源,比如

system::classA::myresource {
  param1 => "test",
  param2 => "test",
}

但是参数总是空的。如何在classB中传递或访问参数?

您需要将参数添加到classB中,以便数据可以通过:

class system::classB($param1, $param2) {
  file { "${param1}":
    ensure => present,
  }
}
然后,使用此样式并设置新参数,而不是在system::classA::myresource中使用include函数:

define myresource ($param1, $param2) {
  class { "system::classB":
    param1 => $param1,
    param2 => $param2,
  }
}

请注意,在类中定义一个类是不常见的,我建议将myresource放在类a之外。

还请注意,在这种情况下,他应该直接声明类B,如果他想像现在这样执行include路径,您可能需要提到自动数据绑定。我同意您的观点,但是这个问题太缺乏背景/太模糊了,很难说它应该如何实施。我只是认为这两种可能性都应该提出。您更喜欢类声明,如果John回答了这个问题,他会选择自动数据绑定路线。这完全是一个意见问题。