On Sun, Dec 19, 2010 at 4:40 AM, Spenser Gilliland <spenser...@gmail.com> wrote: > On Sun, Dec 19, 2010 at 4:14 AM, Matthew Macdonald-Wallace > <li...@truthisfreedom.org.uk> wrote: >> On Sun, 2010-12-19 at 01:51 -0600, Spenser Gilliland wrote: >>> Yeap, I'm seeing that it doesn't exist yet either. I'm thinking maybe >>> I can use exported resources or maybe just an exec that increments a >>> counter on the host. Either way it's not very pretty. My use case is >>> as follows: >>> >>> In Debian, Redmine has the option of being installed as several >>> instances controlled by a single debconf variable. In order to >>> utilize this feature, I need to supply debconf with the name of all >>> instances of Redmine on the server. I've split this out into the >>> following way: A class called Redmine which installs the Redmine >>> package and should hold an array of all the instances of Redmine to >>> feed to debconf using the "responsefile" parameter. >>> >>> So I think I've come up with a solution in my head but it involves me >>> guaranteeing that the redmine class is instantiated before any of the >>> redmine::instances are defined. Essentially, I'll use an >>> environmental variable or file and clear it with the Redmine class and >>> append to it for each redmine::instance. Maybe like below? >>> >>> class redmine { >>> exec{"rm /tmp/instances && touch /tmp/instances"} >>> } >>> >>> define redmine::instance >>> exec{"echo $name >> /tmp/instances"} >>> } >> >> Can you "read" (from the file system or list the redmine databases in >> mysql/postgresql server?) a list of installed instances? >> >> If so, why not setup a custom fact which has all the instances listed as >> a csv string: >> >> ========== PSEUDO CODE!!! ========== >> instances = read_instances() # a class which connects to the db/file >> # system to read in the instances and converts them to CSV format # >> >> Facter.add redmine_instances do >> setcode do >> instances >> end >> end >> =================================== >> >> and then template the /tmp/instances file using erb: >> >> ========== PSEUDO CODE!!! ============ >> <% redmine_instances.each do |instance| -%> >> instance >> <% end -%> >> ====================================== >> >> Your manifest could then source this template onto the file system and >> feed the file to debconf. >> >> It's a bit more long winded, however it means that if you want to add >> instances, you just add an extra value to the fact. >> >> We use this technique to manage MySQL replication and it works really >> well! >> >> Cheers, >> >> M. >> >> >> >> -- >> You received this message because you are subscribed to the Google Groups >> "Puppet Users" group. >> To post to this group, send email to puppet-us...@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. >> >> > > Matthew, > > I'm a bit confused on your code, how does an instance get added to the db? > > Matthias > > Approach one won't work, I am doing this from multiple different > locations in the code. Also because this is eventually something I > want to hide I would probably just set it up using a variable in the > node definition and have it read by the redmine class. > > node redmine { > $instances = ["john", "ted", "nancy"] > include redmine > redmine::instance{"john", "ted", "nancy"} > } > > Approach two is similar to Matthews, so I have the same question how > do I add an instance to the db? > > Thanks, > Spenser > > -- > Spenser Gilliland > Computer Engineer > Illinois Institute of Technology >
Also, just out of interest. Would it make sense to create a feature request for this? I can think of quite a few instances where this would be useful. Thanks, Spenser -- Spenser Gilliland Computer Engineer Illinois Institute of Technology -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To post to this group, send email to puppet-us...@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.