2017-06-16 4 views
0

Ich habe die folgende Liste in Ansible und möchte eine flache Struktur bekommen. Eingang:Ansible Liste flatten

[ 
{ 
    id: "one", 
    level: "3" 
}, 
{ 
    id: "two", 
    level: "8" 
}, 
... 
] 

gewünschte Ausgabe:

[ 
{ 
    one: "3" 
}, 
{ 
    two: "8" 
}, 
... 
] 

Antwort

1

Es gibt keine einfache Möglichkeit, aus dem Kasten heraus.

können Sie entweder verwenden, um benutzerdefinierte template filter:

my_list | map('template','{"<<item.id>>":"<<item.level>>"}',from_json=true) | list 

oder eine neue Variable erzeugen mit set_fact + register + with_items finden Process complex variables with set_fact and with_items.

- set_fact: 
    tmp_item: '{ "{{ item.id }}": "{{ item.level }}" }' 
    with_items: "{{ my_list }}" 
    register: tmp_list 
- debug: 
    msg: "{{ tmp_list.results | map(attribute='ansible_facts.tmp_item') | list }}"