Hash merging not working for me (hash_behaviour = merge)

396 views
Skip to first unread message

Daniel Schroeder

unread,
Sep 23, 2014, 7:12:04 AM9/23/14
to ansible...@googlegroups.com
Hello,

I want to merge hashes of config files. My ansible.cfg includes this line:

hash_behaviour = merge

The ansible.cfg file is in the same directory as my playbook, in other words, the current directly where I'm cd'ed in when running ansible-playbook. I confirmed it's being used by adding a syntax error which ansible then complains about. ANSIBLE_CONFIG is empty so it should be the first and last to check.

But my hash is not merged, but overridden. 

In my example I have 3 tasks:

- include_vars: /path/to/file/A

- include_vars: /path/to/file/B

- debug: var=test


Content of file A:
test:
  a
: 1

Content of file B:
test:
  b
: 1

When I run my playbook, this is the result:

TASK: [include_vars /path/to/file/A] ***
ok
: [test1.local]


TASK
: [include_vars /path/to/file/B] ***
ok
: [test1.local]


TASK
: [debug var=test] ******************************************
ok
: [test1.local] => {
   
"test": {
       
"b": 1
   
}
}

Is this expected? How can I archive that the hash is merged and the resulting value is 

test: {
 
"a": 1,
 
"b": 1
}


Thanks,
Daniel

Michael DeHaan

unread,
Sep 23, 2014, 8:20:52 AM9/23/14
to ansible...@googlegroups.com
For starters, can you please share what version of Ansible you are using?  

(It very well could be that include_vars isn't aware of hash merging, as it was a more recent addition and hash merging is used most frequently with different groups of inventory and such - I am not sure it makes sense here - but it may)

Thanks!



--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/ansible-project/f08ac158-ca36-4164-9d13-ddacc7e0abd4%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Daniel Schroeder

unread,
Sep 23, 2014, 8:46:23 AM9/23/14
to ansible...@googlegroups.com
I'm running the most recent version available via homebrew, 1.7.1

Michael DeHaan

unread,
Sep 23, 2014, 4:31:37 PM9/23/14
to ansible...@googlegroups.com
Ok, I would file a ticket on this one, I think the include_vars just needs to call our usual combine_vars function.

Thanks!

--Michael



Daniel Schroeder

unread,
Sep 24, 2014, 7:18:28 AM9/24/14
to ansible...@googlegroups.com
Thanks Michael,


Best,
Daniel

Serge van Ginderachter

unread,
Sep 24, 2014, 8:42:06 AM9/24/14
to ansible...@googlegroups.com
After a quick look in the action module, I see those vars are actually returned as ansible_facts, so merging include_vars would mean merging ansible_facts AFAICS. (playbook/__init__.py)

--
You received this message because you are subscribed to the Google Groups "Ansible Project" group.
To unsubscribe from this group and stop receiving emails from it, send an email to ansible-proje...@googlegroups.com.
To post to this group, send email to ansible...@googlegroups.com.
Reply all
Reply to author
Forward
0 new messages