|
There are a number of problems that arise when performing acceptance testing, that stem from the fact that Puppet has a single modulepath. This path is a combination of:
-
a global module directory that has historically been called sitemoduledir
-
/usr/share/puppet/modules then /opt/puppetlabs/puppet/modules with the advent of AIO for non-Windows platforms
-
C:/usr/share/puppet/modules then non-existent with the advent of AIO for Windows platforms, since it has never been used and is an invalid path
-
a local install module directory that has historically been called distmoduledir
-
/etc/puppet/modules then /etc/puppetlabs/code/modules with the advent of AIO for non-Windows platforms
-
C:/Program Files//PuppetLabs/puppet/etc/modules then C:/Program Files/PuppetLabs/code/modules with the advent of AIO on Windows
Often acceptance tests need to express these independently, rather than through a single modulepath setting in Puppet, so testing tools have to be aware / take special care in configuring Puppet properly.
If these settings could be set independently, then a lot of this churn could go away, and tools like Beaker could introspect Puppet instead of the current state of affairs.
See the current code at: https://github.com/puppetlabs/puppet/blob/5440053fb0e99b792f0a60ee773e6805e76e610a/lib/puppet/defaults.rb#L962-L975
Given this has many touch points across Puppet and toolchains that integrate with / consume Puppet, this should be considered a large effort.
Targeted at Puppet 5 since this is a breaking change.
|