John Cheers for that...
Could you expand on *"enhance selectivity by declaring all the relevant resources virtually, and then using collections with appropriate predicates to realize only the ones that are wanted for the current target."*? Have used virtual resources for other bits and pieces, but not familiar with 'collections'... Cheers Gavin On Tuesday, 15 January 2013 19:05:33 UTC, jcbollinger wrote: > > > > On Tuesday, January 15, 2013 4:34:19 AM UTC-6, Gavin Williams wrote: >> >> Morning all... >> >> Firstly, apologies for the length of this post, however I thought it >> would be beneficial to fully explain what I'm trying to achieve. >> >> I've started using Hiera with Puppet 3.0, and must say I'm very impressed >> soo far. It's handled the bulk of what I've thrown at it so far without any >> issues... >> >> However I'm now starting to think about some of the more complex >> challenges we're hoping to solve with Puppet... >> One of those is Oracle Database configuration management... >> >> Under this falls the following components: >> >> - NetApp Filer volume configuration - Active site and DR site, with >> SnapMirror relationship between the 2. >> - Oracle Database server configuration - Active site and DR site. >> >> As you can see, that's effectively 4 separate components, spread across 2 >> separate sites, but which are closely related... >> >> Currently, all our Hiera configuration is driven from the physical view, >> that is a host, or an environment, or a data-centre... >> However I'd like to try and turn this configuration on it's head and go >> logical... That is each Database instance has it's own configuration data, >> which contains all the relevant information such as what it's Active and DR >> NetApp filer is, what it's volume sizes are, what Active database server it >> should live on, where it should be in DR mode... >> >> Now this all seems quite easy to define in Hiera Yaml... Something like >> the following should cover it: >> --- >> database_sid: 'ORACLE01' >> active_filer: 'site1-nactl01' >> replica_filer: 'site2-nactl01' >> active_database_server: 'site1-db01' >> replicate_database_server: 'site2-db01' >> oracle_version: '11.2.0.3' >> volumes: >> ORACLE01_oractrl: >> ensure: present >> size: '1g' >> ORACLE01_oradata: >> ensure: present >> size: '150g' >> ORACLE01_oraredo: >> ensure: present >> size: '10g' >> ORACLE01_oratemp: >> ensure: present >> size: '10g' >> ORACLE01_oraarch: >> ensure: present >> size: '20g' >> snapschedule: >> minutes: 0 >> hours: 36 >> days: 0 >> weeks: 0 >> snapmirror: >> ... >> >> However the challenge I'm currently struggling to get my head around is >> how I can turn that logical view into the various physical views that are >> needed for each component... >> It also gets further complicated in that there is going to be multiple >> database instances, with some commonality between them, and some >> variation... >> >> So if I'm running puppet on *site1-db01*, I want to process all >> databases that have either an '*active_database_server*' or a '* >> replicate_database_server*' value matching the hostname. >> If running puppet against *site1-nactl01*, then need to process all >> databases that have an '*active_filer*' matching the hostname... >> >> Any ideas on where I could begin? >> Or is there a better way for me to achieve this? >> > > > Arranging for each node to draw on (only) the correct data is normally a > question of how you structure your data and organize your hierarchy. Hiera > has no built-in mechanism for applying the kind of selection predicates you > describe, so you would layout your data such that nodes only get the data > for the instances that should be configured on them. > > Failing (or instead of) that, you can enhance selectivity by declaring all > the relevant resources virtually, and then using collections with > appropriate predicates to realize only the ones that are wanted for the > current target. > > If that's insufficient then you could consider creating custom functions > to sift the wanted data from the available data. You might even be able to > make it generic enough to be reusable. > > > John > > -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To view this discussion on the web visit https://groups.google.com/d/msg/puppet-users/-/0_lYJVhBtlcJ. 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.