也许它可以在 1 个任务中完成,但我会这样做:
“主”列表需要 1 个循环,“b”键列表需要 1 个动态循环。我们将使用include_tasks 任务来处理“主”列表的每个字典,然后在包含的任务文件中仅使用set_fact 来循环“b”键,并填充我们的变量。
代码:
main.yml:
---
- hosts: localhost
gather_facts: false
vars:
source_var:
- { "a": "zzz", "b": [1, 2] }
- { "a": "yyy", "b": [7, 9] }
tasks:
- name: print var
include_tasks: "set_fact.yml"
with_items: "{{ source_var }}"
loop_control:
loop_var: itemoflist
- name: print var
debug:
var: target_var
包括PB,叫set_fact.yml:
- name: populate_var
set_fact:
target_var: "{{ target_var | default([]) + [{ 'a': itemoflist.a, 'b': item }] }}"
with_items:
- "{{ itemoflist['b'] }}"
已创建变量:
TASK [print var] *******************************************************************************************************************************************************************************************************
ok: [localhost] => {
"target_var": [
{
"a": "zzz",
"b": 1
},
{
"a": "zzz",
"b": 2
},
{
"a": "yyy",
"b": 7
},
{
"a": "yyy",
"b": 9
}
]
}
希望对你有帮助。