
Рассмотрим эти два файла модуля 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": }
}
Похоже, что когда Puppet сталкивается с include b::c
директивой в классе 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'