Ansible列表展平

时间:2017-06-16 05:17:33

标签: list ansible

我在Ansible中有以下列表,并希望得到一个扁平结构。 输入:

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

期望的输出:

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

1 个答案:

答案 0 :(得分:1)

没有简单的方法开箱即用。

您可以使用自定义template filter

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

或使用set_fact + register + with_items生成新变量,请参阅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 }}"