Issue #2716 has been reported by Robin Bowes.

----------------------------------------
Refactor #2716: Provide some way to override puppet classes
http://projects.reductivelabs.com/issues/2716

Author: Robin Bowes
Status: Unreviewed
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
-~----------~----~----~----~------~----~------~--~---

Reply via email to