ansible如何在主机之间建立列表的并集

时间:2019-06-14 20:48:51

标签: ansible

我有一个变量host_list,这是所有主机的不同列表。 我正在寻找一种使host_list跨主机联合的方法。 意思是,我想让total_list包含所有主机的host_list的所有元素。

输入:

- fe1: [ "W", "Z" ] - be1: [ "Z", "X" ]

输出: total_list:[“ W”,“ Z”,“ X”}

我该怎么办?

谢谢, 拉乌尔

3 个答案:

答案 0 :(得分:0)

简单的选择是使用json_query

- set_fact:
    union_list: "{{ hostvars|json_query('[].host_list')|flatten|unique }}"

答案 1 :(得分:0)

广告资源中的两组

array([[ 1.  ,  3.  ],
       [ 1.33,  4.2 ],
       [17.83,  3.4 ],
       [ 1.67,  5.4 ],
       [18.6 , 12.51]])

联盟:

cat hosts
[group1]
a
b
c
[group2]
b
d
e
f

答案 2 :(得分:0)

好吧,我终于找到了:

- name: union list accross hosts 
  set_fact: 
    union_list: "{{ union_list | default([]) | union(hostvars[item]['host_list']) }}" 
  run_once: true 
  with_items: "{{ groups['all'] }}"