Задачи, приведенные ниже, выполняют работу
- set_fact:
final_list: "{{ final_list|default([]) + [
tag_info.results[item].vm_list|
intersect(tag_info.results[item + 1].vm_list)] }}"
loop: "{{ range(0, tag_info.results|length - 1, 1)|list }}"
- debug:
var: final_list
дают
"final_list": [
[
"NSY6TFSANSBL01"
],
[
"NSY6TFSANSBL01",
"NSY6TFSANSBL02"
]
]
Фиксированные данные
tag_info:
changed: false
msg: "All items completed"
results:
- {"vm_list": ["NSY6TFSANSBL01"]}
- {"vm_list": ["NSY6TFSANSBL01", "NSY6TFSANSBL02"]}
- {"vm_list": ["NSY6TFSANSBL01", "NSY6TFSANSBL02", "NSY6TFSANSBL03"]}
Q: "Пересечение всех списков в tag_info.results может быть N Количество объектов vm_list."
A: Начать с первого vm_list
объекта и вместо добавления пересекаются следующие vm_list
объекты. Например
- set_fact:
final_list: "{{ final_list|
default(tag_info.results.0.vm_list)|
intersect(tag_info.results[item].vm_list) }}"
loop: "{{ range(1, tag_info.results|length, 1)|list }}"
- debug:
var: final_list
Да
"final_list": [
"NSY6TFSANSBL01"
]