我对所应用模块的顺序有一定程度的依赖性:
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)
答案 0 :(得分:2)
订购关系不会超越使用include
或class { 'title': }
的公共类声明。
在您的方案中,最简单的方法是contain类。
class base {
contain base::prereqs
contain base::worker
Class['base::prereqs'] -> Class['base::worker']
}