Consider these two Puppet module files:
# 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": }
}
It seems that when Puppet hits the include b::c
directive in class a::b::c
, it searches for the corresponding *.pp file by looking backwards from the current class and decides that it find the correct file located at ../../b/c.pp
. In other words, it resolves b::c
to the same *.pp file that the include b::c
statement appears in: modules/a/manifests/b/c.pp
I expected it (and would like it) to instead find and load the file modules/b/manifests/c.pp
. Is there a way to make Puppet do this? If not, it seems to me that module names may not contain any other module names anywhere within them, which is a pretty surprising restriction.
to force it to top use 'include ::b::c'