Ruby Puppet类命令使用defines中断

Ruby Puppet类命令使用defines中断,ruby,puppet,puppet-enterprise,Ruby,Puppet,Puppet Enterprise,我对所应用模块的顺序有一定程度的依赖性: class build() { # define order Class['base'] -> Class['config'] -> Class['app'] -> Class['sso'] class { 'base' : ... } class { 'config' : ... } # etc } class base::init.pp () { class { 'base::pr

我对所应用模块的顺序有一定程度的依赖性:

class build() {
    # define order
    Class['base'] -> Class['config'] -> Class['app'] -> Class['sso']

    class { 'base' : ... }
    class { 'config' : ... }
    # etc
}

class base::init.pp () {
    class { 'base::prereqs' : ... }
    class { 'base::worker' : 
        require => Class['base::prereqs']
        ... 
    }
}

# etc etc
base::prereqs
具有以下内容时,会发生错误:

define base::prereqs::file () { ... }

class base::prereqs () {
    $files = [ 'file_name', ... ]
    base::prereqs::file { $files : }
}
所需顺序为base::init-->base::prereqs-->base::worker-->config::init-->config::preprepreeqs-->config::worker-->app::init…

然而,使用define的实际订单变成了

base::init-->base::prereqs(定义中创建的资源除外)-->config::init-->config::prereqs-->……-->base:preprepreq(由define创建的资源)-->base::worker

base
中的排序是一致的,但是
order
中的级别似乎不知道资源已添加到
prereqs
中,并且认为
base
已完成

有什么帮助吗


Puppet v3.6.2(Puppet Enterprise 3.3.2)

使用
include
class{'title':}
排序关系不超越公共类声明

在您的场景中实现这一点的最简单方法是创建类


新手问题,变量仍然可以通过
contain
传递吗?是的,可以<代码>类ntp{{#…类{'ntp::service':enable=>true,}包含“ntp::service”#…}@rjinski yes,但无论如何,最好还是依赖Hiera和自动参数查找。
class base {
    contain base::prereqs
    contain base::worker
    Class['base::prereqs'] -> Class['base::worker']
}