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 [email protected].
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.