ansible - 如何在ansible中循环嵌套字典?
问题描述
我怎样才能遍历这本字典?
# nested dictionary to loop over:
vars:
commands:
group1:
cmd1:
run: foo
cmd2:
run: bar
group2:
cmd3:
run: zoo
# expected loop:
- group1, cmd1={...}
- group1, cmd2={...}
- group2, cmd4={...}
我尝试使用 dict2items 和 with_nested 的各种组合,但到目前为止我无法实现该目标,我真的想避免使用包含任务的循环或编写一个执行扁平化的 python 模块。
我仍然希望有一种纯粹的方法来做到这一点。
解决方案
loop
包含的任务是可能的included_tasks
。例如文件
shell> cat inner-loop.yml
- debug:
msg: "{{ outer_item.key }}, {{ item.key }}={{ item.value }}"
loop: "{{ outer_item.value|dict2items }}"
包含在任务中
- include_tasks: inner-loop.yml
loop: "{{ commands|dict2items }}"
loop_control:
loop_var: outer_item
给
"msg": "group1, cmd1={u'run': u'foo'}"
"msg": "group1, cmd2={u'run': u'bar'}"
"msg": "group2, cmd3={u'run': u'zoo'}"
推荐阅读
- c++ - 为什么 const 按值结构绑定允许用户修改引用的变量?
- javascript - 我如何找到重复并添加行号/计数
- javascript - 将 :text: 替换为文件夹中我自己的 gif
- apache-flink - 失败时flink如何处理打开的事务
- javascript - Javascript 按钮 [数据]
- reactjs - react-tabs 重新渲染选项卡(或以编程方式更改选项卡)
- javascript - 仅将数组长度限制为 2 个数据
- laravel - 如何在 Laravel Lighthouse Resolver 中使用 toArray?
- ios - 除了重要的位置更新,应用程序终止后还有其他方法获取位置吗?
- reactjs - Cloudinary 和 React - 帮助我将图像 url 和相应图像的文件夹添加到同一个对象