On Tuesday, January 14, 2014 6:37:56 AM UTC-6, Andrew wrote: > > can't seem figure this out. > Here is my data: > > common.yaml > > nfsshares: > > "nfsshare-public": > > name: /var/public > > device: "hostname1:/vol/public" > > remounts: true > > options: 'rw,bg,hard' > > "nfsshare-private": > > name: /var/private > > ensure: mounted > > device: 'hostname2:/var/private' > > remounts: true > > options: 'rw,bg,hard' > > > now on the node level: > > my-test-server.yaml > > nfs::client::nfs_resouce_name: [ 'nfsshare-public', "nfsshare-private" ] > > > > struggling to make class "nfs::client" > > to create resources 'nfsshare-public', "nfsshare-private" based on the > above data in hiera without making "create_resources" inside of > "create_resources" or run loop on nfs_resouce_name and then > create_resource for each item. > > There must be simpler way. > > > Any hints appreciated. >
I'm not altogether clear on what you do or don't want to do, but your data appear to be pointing in this direction: class nfs::client ( $nfs_resource_name ) { nfs::share { ${nfs_resource_name}: sharedata => hiera('nfsshares') } } define nfs::share ( $sharedata ) { $my_data = { $title => $sharedata[$title] } create_resources('mount', $my_data) # if you don't want to use create_resources() # then you can put a regular mount declaration # there. It only needs to handle one resource. } I'm assuming there that you must accommodate cases where the 'nfsshares' data contains more shares than you want to declare for the given node, else create_resources() could more directly be applied to the problem. Alternatively, you could write a custom function that creates a hash containing just the wanted elements by selecting elements from the overall hash based on array of keys. You could use create_resources() directly on that without an intervening defined type. Such a function would be sufficiently general to be reusable, and it could be expressed very compactly in Ruby. John -- You received this message because you are subscribed to the Google Groups "Puppet Users" group. To unsubscribe from this group and stop receiving emails from it, send an email to puppet-users+unsubscr...@googlegroups.com. To view this discussion on the web visit https://groups.google.com/d/msgid/puppet-users/c816acf4-26df-4a6d-881c-ed15457eb10a%40googlegroups.com. For more options, visit https://groups.google.com/groups/opt_out.