Puppet类命令使用定义中断

时间:2015-08-19 13:38:50

标签: 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::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 :: prepreqs - > config :: worker - > app :: init ...

然而,使用定义的实际订单变为......

base :: init - > base :: prereqs(定义中创建的资源除外) - > config :: init - > config :: prereqs - > ... - > base:prepreqs(由define创建的资源) - >基::工人

base内的排序是一致的,但order中的上述级别似乎并不知道已在prereqs内添加了资源,并认为base已完成。< / p>

任何帮助?

Puppet v3.6.2(Puppet Enterprise 3.3.2)

1 个答案:

答案 0 :(得分:2)

订购关系不会超越使用includeclass { 'title': }的公共类声明。

在您的方案中,最简单的方法是contain类。

class base {
    contain base::prereqs
    contain base::worker
    Class['base::prereqs'] -> Class['base::worker']
}