Hi,
After I upgraded my puppetmaster to 3.5, my clients can no longer find my modules. I had my modules broken up into three directories
* modules: third-party modules I install via r10k
* lib-modules: library/generic modules I wrote
* app-modules: application/wrapper modules I wrote
I expressed this in puppet.conf with
[master]
environment = production
manifest = $confdir/environments/$environment/manifests/site.pp
modulepath = $confdir/environments/$environment/modules:$confdir/environments/$environment/lib-modules:$confdir/environments/$environment/app-modules
However, my puppet runs fail with "Could not find class atop"; that class is in lib-modules. When I check the modulepath on my master I don't get what I expect
$ sudo puppet config print modulepath --section master --environment production
/etc/puppet/environments/production/modules:/etc/puppet/modules:/usr/share/puppet/modules
Based on the documentation I've read [0], I think this is because I named the directory that I stored my dynamic environments in "environments". In 3.5 if puppet sees a directory named "environments" it will use "directory environments" instead of "config-file environments". I.E. the precedence is
static config-file environments → directory environments → dynamic (
$environment) config-file environments
This is a surprise, since I did not intentionally set up directory environments and they don't support my modulepath. To me it seems like this behavior unncecessarily breaks existing puppet setups. Why isn't the precedence
static config-file environments → dynamic (
$environment) config-file environments→ directory environments ?
Also, shouldn't a warning about this be added to the release notes?
[0]
http://docs.puppetlabs.com/puppet/latest/reference/environments_classic.html#interaction-with-directory-environments