我有一个使用with_subelements的任务,但是对于大列表来说,速度太慢了(特别是大多数元素都有重复,而且我不需要为它们多次运行)。
所以我正在寻找一种方法来优化它。 我希望从列表中获得所有独特的元素 – 例如下面的示例中的settings :
库存:
my_list: - { name: foo, settings: ['x', 'y', 'z'] } - { name: bar, settings: ['x', 'y', 'q', 'w'] }
任务:
- name: get all settings set_fact: all_settings="{{ my_list|map(attribute='settings')|list }}" - name: show results debug: var=all_settings
结果:
"var": { "all_settings": [ [ "x", "y", "z" ], [ "x", "y", "q" "w" ] ] }
我坚持在这一点上。 我怎样才能将这些列表结合在一起?
我正在寻找一种方法来获得['x', 'y', 'z', 'q', 'w']
你需要使用union 。
closures我的头顶上:
all_settings="{{ foo|map(attribute='settings')|union(bar|map(attribute='settings')) }}"