Ansible – How to keep appending new keys to a dictionary when using set_fact module with with_items?

Question:

I want to add keys to a dictionary when using set_fact with with_items. This is a small POC which will help me complete some other work. I have tried to generalize the POC so as to remove all the irrelevant details from it.

When I execute following code it is shows a dictionary with only one key that corresponds to the last item of the with_items. It seems that it is re-creating a new dictionary or may be overriding an existing dictionary for every item in the with_items. I want a single dictionary with all the keys.

Code:

Answer:

Use a filter plugin.

First, make a new file in your ansible base dir called filter_plugins/makedict.py.

Now create a new function called “makedict” (or whatever you want) that takes a value and a list and returns a new dictionary where the keys are the elements of the list and the value is always the same.

Now you can use the new filter in the playbook to achieve your desired result:

You can customize the location of the filter plugin using the filter_plugins option in ansible.cfg.

Leave a Reply