Sometimes, you need to switch keys and values of a supplied dictionary or an array.
You can process this data structure to create another variable that can simplify your code.
For instance, we have a list of motocycles with an associated color (in real life, you may get the list of all your loadbalancers in AWS).
- hosts: localhost gather_facts: no vars: dico: [ { keyone: "ducati", keytwo: "red" }, { keyone: "kawazaki", keytwo: "green" }, { keyone: "honda", keytwo: "blue" } ] # Now, you process with Jinja and store the result in a fact # fact is stored in localhost's facts tasks: - set_fact : sf_new_dict: | {% set comma = joiner(",") %} { {% for item in dico -%} {{ comma() }} '{{item.keytwo}}':'{{item.keyone}}' {%- endfor %} } - debug: var=sf_new_dict # then you can access directly the record you need - debug: msg="who sells red bikes ? {{hostvars['localhost'].sf_new_dict['red']}}"
Let’s give a run !
TASK [set_fact] ************************************************************ ok: [localhost] TASK [debug] *************************************************************** ok: [localhost] => { "sf_new_dict": { "blue": "honda", "green": "kawazaki", "red": "ducati" } } TASK [debug] ***************************************************************** ok: [localhost] => { "msg": "who sells red bikes ? ducati" }