Greetings all Am trying to solve a problem, not entirely sure I'm approaching it from the right angle.
Setting up a reasonably big site (servercount in the four digits) with puppetmaster and clients (puppet 2.6.x). We are required to have versioned modules (base SOE module, app X module, app Y module, etc - all with multiple classes etc inside) managed on an underlying SVN repository. A requirement is that a node should be configured entirely within node.pp, should not rely on extra per-server specifics added to puppet.conf on either puppetmaster or agent ends Different nodes are required to have different versions of same modules. site.pp imports files with node definitions. Node definitions must end up including a base class of a nominated version and any number of app classes, each with its respective version. The approaches to choose from I'm aware of are: [approach A] ALL versions of a module are simultaneously available to all servers via one big ubercatalog. SVN trunk, as well as SVN tag directories (containing historic versions of modules) are added to modulepath on the puppetmaster via puppet.conf The node file then says: include base-1.2.3 Problems with this approach: 1. We can't have two versions of "base". We need to call them differently. Thus, when a new SVN 'tag' is made, it needs to be branched out, and all references inside - base::class::foo be changed to base-1.2.3::class::foo in a multitude of places in the module. Doing this manually is impractically tedious. Doing this automatically is unacceptably risky. 2. The catalog will keep getting lumpier and bloatier with time and might someday reach a point where something breaks. [approach B] A node can cherry-pick its module version (injecting manifest code into the node definition that tells puppetmaster to use a custom modulepath?) This sounds good, but how does one do this? [c] Scrap modules altogether and just import the correct manifests, using the directory path to the manifests to nominate the SVN tag directory with the right version, then doing: include base I don't like [c] (especially as my modules have both files and templates that need to be referenced as well), but it's the only thing I've managed to make work so far. Can anyone suggest how to make modules work to suit these requirements? Much thanks :) -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-users@googlegroups.com. To unsubscribe from this group, send email to puppet-users+unsubscr...@googlegroups.com. For more options, visit this group at http://groups.google.com/group/puppet-users?hl=en.