On 09/08/17 01:10, ggun wrote:
Hi Experts,
I have a requirement as below.
I need to create a Hash from below hiera data.
was_data:
hs3sourcepath: 'glic.binaries/websphere'
hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath:
/opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
hbase_dir: '/opt/was/was855'
hinstance_name: WebSphere
was_dmgr_data:
esa-group-service:
hgroup: websph
hdmgr_profile: TST
hdmgr_cell: CELL
hcluster_name: CLUSTER
hpptdmgrsrvport: 8080
esa-user-profile-service:
hdmgr_profile: ABC
hdmgr_cell: PQS
hcluster_name: IOP
hpptdmgrsrvport: 0000
I need a hash of above data as
Hash 1 :
esa-group-service:
hgroup: websph
hdmgr_profile: TST
hdmgr_cell: CELL
hcluster_name: CLUSTER
hpptdmgrsrvport: 8080
hs3sourcepath: 'glic.binaries/websphere'
hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath:
/opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
hbase_dir: '/opt/was/was855'
hinstance_name: WebSphere
Hash 2
esa-user-profile-service:
hdmgr_profile: ABC
hdmgr_cell: PQS
hcluster_name: IOP
hpptdmgrsrvport: 0000
hs3sourcepath: 'glic.binaries/websphere'
hdaresponse_file: /opt/software/WAS8.5.5.10_Install.xml
hibmagentpath:
/opt/software/agent.installer.linux.gtk.x86_64_1.8.2000.20150303_1526.zip
hbase_dir: '/opt/was/was855'
hinstance_name: WebSphere
So I trying to merge the has of esa-group-service to was_data and
esa-user-profile-service to was_data
Please let me know if there is a way
"There is always a way..." - question is if there is a good way ;-)
I take it that it is not feasible to rearrange how the data is organized
in hiera in the first place - that would otherwise be the best.
The issue here is that you cannot simply both merge and split up the
hash at the same time - you have one part that looks like a common part;
defaults for the other two parts if you like.
With hiera 5, if you change the data structure to consist of a defaults
part - under one key, say "esa_default", and then store the other two
under their respective keys 'esa_group_part', 'esa_user_part', then you
have several options:
* write a hiera 5 backend function that returns the merged result for
the two full keys for the group and user structures
* write a class where you use APL to get the three parts, and then merge
in that class, binding to a variable that you then use to get the merged
result.
I would do the hiera backend function.
If you also need the original data structure (as shown in your example)
then also merge a result that looks like that in your backend function.
The function would be simple - basically do something like:
lookup('esa_default') + lookup('esa_group_part')
or
lookup('esa_default') + lookup('esa_user_part')
to override defaults with more specific values (if that is what you want
to do - or some variation on that if it is not defaults in the "common"
part).
I choose the names "group_part" and "user_part" simply for illustration.
Hope this helps you.
You can read more about how to create a backend function here:
https://docs.puppet.com/puppet/5.0/hiera_custom_lookup_key.html
- henrik
--
Visit my Blog "Puppet on the Edge"
http://puppet-on-the-edge.blogspot.se/
--
You received this message because you are subscribed to the Google Groups "Puppet
Developers" 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-dev/omejnq%24j0t%241%40blaine.gmane.org.
For more options, visit https://groups.google.com/d/optout.