Here is an example from puppetdb module.
It hard codes the location of puppet configuration directory.
So puppet can not self manage it's self if the confdir is different. Either hard code the conf dir and do not allow it to be changed in /etc/puppet/puppet.conf or on the command line. Or create special facts for puppet.conf so modules can find the correct confdir
I suggest you create a test bed with /etc/puppet/puppet.conf with
And see what breaks.