1

適用されるモジュールの順序に依存レベルがあります。

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 (define で作成されたリソースを除く) --> config::init --> config::prereqs --> ... --> base:prepreqs (define で作成されたリソース) ) --> ベース::ワーカー

内部の順序baseは一貫していますが、上のレベルでorderは、リソースが内部に追加されたことを認識していないようで、完了したprereqsと見なされbaseます。

何か助けはありますか?

パペット v3.6.2 (パペット エンタープライズ 3.3.2)

4

1 に答える 1

2

include順序関係は、 orを使用した共通クラス宣言を超えませんclass { 'title': }

シナリオでこれを行う最も簡単な方法は、クラスを含めることです。

class base {
    contain base::prereqs
    contain base::worker
    Class['base::prereqs'] -> Class['base::worker']
}
于 2015-08-19T17:06:08.100 に答える