Issue #2716 has been updated by Peter Meier.
We have recently discussed this as well on the users list from here on: http://groups.google.com/group/puppet-users/browse_thread/thread/33cdb55be877b5af#3ea0eaa8457ba4e2 and rejected it as a terrible feature. I agree with the others that a module should definitely have only one load path, as all other things would just increase the possibilities for problems. As well I have to admit that we're running now very fine with the site- prefix and you see it on one spot. It's even more logical that you distinguish by naming betweend public and site-specific modules. ---------------------------------------- Refactor #2716: Provide some way to override puppet classes http://projects.reductivelabs.com/issues/2716 Author: Robin Bowes Status: Re-opened Priority: Normal Assigned to: Category: modules Target version: Affected version: 0.25.1rc1 Branch: I like to try and write generic puppet modules, ie. they are standalone as much as possible and should work in copied and pasted into another puppet environment. However, sometimes I may want to use a generic module but override the configuration. I generally write my modules like this: <pre>vsftpd |-- files | `-- vsftpd.conf `-- manifests |-- config.pp |-- init.pp |-- install.pp `-- service.pp</pre> init.pp contains sometihng like this: <pre>class vsftpd { require vsftpd::install, vsftpd::config, vsftpd::service }</pre> I had hoped that I could override classes by using modulepath like: <pre>site/modules:generic/modules</pre> I would put my generic modules in the generic/modules tree and over-ride specific class by putting them in the site/modules tree. So, I created a vsftpd tree (as above) in generic/modules and created the following tree in site/modules: <pre>vsftpd `-- manifests `-- config.pp</pre> I also added a module for my test node: <pre>node `-- manifests `-- a001.pp</pre> a001.pp contains: <pre>class node::a001 { include vsftpd }</pre> When I run puppetd --test on node a001, I get this error: <pre># puppetd --test info: Retrieving plugin err: Could not retrieve catalog from remote server: Error 400 on SERVER: Could not find class vsftpd in namespaces node::a001 at /etc/puppet/site/modules/node/manifests/a001.pp:3 on node a001.private.statcounter.com warning: Not using cache on failed catalog err: Could not retrieve catalog; skipping run</pre> It seems that puppet is finding site/modules/vsftpd and assuming that the vsftpd class is in site/modules/vsftpd/manifests/init.pp, which of course it isn't. I suggest that puppet should look for <modulename>/manifests/init.pp (not just <modulename>) in each element of $modulepath before deciding that it can't find <modulename>. This would allow classes to be over-ridden. -- You have received this notification because you have either subscribed to it, or are involved in it. To change your notification preferences, please click here: http://reductivelabs.com/redmine/my/account --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "Puppet Bugs" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/puppet-bugs?hl=en -~----------~----~----~----~------~----~------~--~---
