Как создать список словарей с помощью ansible

#dictionary #ansible #jinja2 #ansible-template

#словарь #ansible #jinja2 #ansible-шаблон

Вопрос:

Я хочу создать список словарей с помощью ansible. Я могу создавать словари, но не могу сохранить их в виде списка.

   - 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 — это список разделов в ini-файле properties_file

например, properties_file

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

file_set это словарь, который содержит только section2 значения. Я хочу создать список словарей.

Ответ №1:

Поместите словарь в список ‘[]’ и объедините ‘ ‘ списки. Например

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

Задачи, приведенные ниже

  - 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
  

дайте

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