
次の 2 つの Puppet モジュール ファイルを検討してください。
# File modules/a/manifests/b/c.pp
class a::b::c {
include b::c
}
# File modules/b/manifests/c.pp
class b::c {
notify { "In b::c": }
}
include b::c
Puppet がクラス のディレクティブにヒットするとa::b::c
、現在のクラスから逆方向に検索して対応する *.pp ファイルを検索し、 にある正しいファイルを見つけると判断するようです../../b/c.pp
。つまり、ステートメントが出現するb::c
のと同じ *.pp ファイルに解決されますinclude b::c
。modules/a/manifests/b/c.pp
代わりに、ファイルを見つけてロードすることを期待していました (そしてそうしたいです) modules/b/manifests/c.pp
。Puppet にこれを実行させる方法はありますか? そうでない場合、モジュール名には他のモジュール名を含めることはできないと思われますが、これはかなり意外な制限です。
答え1
強制的に先頭にするには 'include ::b::c' を使用します