1

include_vars执行with后我得到了一系列结果with_items

results:
- ansible_facts:
    tag_Cluster_A:
      name: Thinking cluster
      words:
      - Honk
      - Thonk
- ansible_facts:
    tag_Cluster_B:
      name: Helloing Cluster
      words:
      - HOI
      - HOI HOI

我正在尝试将带有结果的对象放到一个仅包含这些tag_Cluster_*东西的平面对象中。

tag_Cluster_A:
  name: Thinking cluster
  words:
  - Honk
  - Thonk
tag_Cluster_B:
  name: Helloing Cluster
  words:
  - HOI
  - HOI HOI

查询results[].ansible_facts结果是一个数组,例如:
[{tag_Cluster_A:{}},{tag_Cluster_B:{}}]距离期望结果只有 1 步。

我如何将这些组合在一起?

4

1 回答 1

1

如果mylist[{tag_Cluster_A:{...}},{tag_Cluster_B:{...}}],那么

mydict: "{{ dict(mylist | map('dictsort') | sum(start=[])) }}"

{tag_Cluster_A:{...},tag_Cluster_B:{...}}

在这个技巧中,我们将dictsort过滤器应用于原始列表的每个元素,然后将列表展平以获得单个对列表,然后将其转换回 dict。

于 2017-12-12T06:06:55.117 回答