pavan kumar
pavan kumar

Reputation: 121

How to create list of dictionaries using ansible

I want to create list of dictionaries using ansible. I am able to create dictionaries but I am unable to save them in a list.

  - name: Create list of dictionaries
    set_fact:
      file_set:  "{{ file_set|default({}) | combine({ item.1:lookup('ini', '{{ item.1 }} section={{ item.0 }} file={{ properties_file }}') }) }}"
    with_nested:
    - [ "section1", "section2" ]
    - [ "key1", "key2", "key3" ]

section_names - is a list of sections in the ini file properties_file

e.g., properties_file

[section1]
key1=value1
key2=value2
key3=value3
[section2]
key1=value4
key2=value5
key3=value6

file_set is the dictionary which contains only the section2 values. I want to create the list of dictionaries.

Upvotes: 1

Views: 795

Answers (1)

Vladimir Botka
Vladimir Botka

Reputation: 68384

Put the dictionary into a list '[]' and concatenate '+' the lists. For example

file_set:  "{{ file_set|default([]) + [{item.1: lookup( ... )}] }}"

The tasks below

 - set_fact:
     file_set: "{{ file_set|default([]) +
                   [{item.1: lookup('ini', item.1 ~
                                           ' section=' ~ item.0 ~
                                           ' file=properties_file')}] }}"
   with_nested:
     - [section1, section2]
     - [key1, key2, key3]
 - debug:
     var: file_set

give

  file_set:
  - key1: value1
  - key2: value2
  - key3: value3
  - key1: value4
  - key2: value5
  - key3: value6

Upvotes: 2

Related Questions