我有类似dict的列表:
- { "a": "zzz", "b": [1, 2] }
- { "a": "yyy", "b": [7, 9] }
我需要ansible来遍历它,以便项目可以连续进行:
- { "a": "zzz", "b": 1 }
- { "a": "zzz", "b": 2 }
- { "a": "yyy", "b": 7 }
- { "a": "yyy", "b": 9 }
我该怎么办?
答案 0 :(得分:1)
也许可以在一项任务中完成,但是这是我的方法:
对于“主”列表,您需要1个循环,对于“ b”键的列表,则需要1个动态循环。我们将使用include_tasks
任务来处理“主”列表的每个字典,然后在包含的任务文件中仅使用set_fact
来循环“ b”键,并填充变量。 / p>
代码:
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
}
]
}
希望有帮助。