Hey guys,
so we have a complex variable which we would like ansible to merge. It does not seem to be doing this and i am trying to figure out why this is happening (hash_behaviour=merge is configured).
here is the information:
- Ansible version 1.9.1
- The files in question are inventory variables.
- First file is global setting (not specific environment) and is found on: /ansible_code/group_vars/dbonline.yml
- Second file is specific environment and is found on: /ansible_code/environments/[ENV_NAME]/group_vars/dbonline.yml
here is the playbook i am running:
---
- hosts: dbonline[0]
gather_facts: false
tasks:
- name: configuration enforcement
action: ConfigDataEnforcer
besURL={{env_all_bes_url}}
configData='{{env_dbonline_configdata | to_json}}'
here is an example of the global file:
---
env_dbonline_configdata: {
"10000000-0000-0000-0000-000000000001":
[
{
"configname":"A",
"configvalue":"a"
},
{
"configname":"B",
"configvalue":"b"
},
],
}
here is an example of the specific environment file:
---
env_dbonline_configdata: {
"10000000-0000-0000-0000-000000000001":
[
{
"configname":"A",
"configvalue":"aaa"
},
{
"configname":"C",
"configvalue":"c"
},
],
"20000000-0000-0000-0000-000000000002":
[
{
"configname":"X",
"configvalue":"x"
},
{
"configname":"Y",
"configvalue":"y"
},
],
}
My expected merge result would be:
---
env_dbonline_configdata: {
"10000000-0000-0000-0000-000000000001":
[
{
"configname":"A",
"configvalue":"aaa"
},
{
"configname":"B",
"configvalue":"b"
},
{
"configname":"C",
"configvalue":"c"
},
],
"20000000-0000-0000-0000-000000000002":
[
{
"configname":"X",
"configvalue":"x"
},
{
"configname":"Y",
"configvalue":"y"
},
],
}
what actually happens is i receive the merge result of the just the global:
---
env_dbonline_configdata: {
"10000000-0000-0000-0000-000000000001":
[
{
"configname":"A",
"configvalue":"a"
},
{
"configname":"B",
"configvalue":"b"
},
],
}
I am not sure what can i do to receive my wanted result as the merge in question is quite complex (nested values, addition of new values per each level and update of values within internal level)
Can anyone assist?
Thanks,