【发布时间】:2021-04-02 17:22:59
【问题描述】:
我正在尝试用 ansible 填充字典中的值,但显然没有这样做。
我喜欢这样:
- name: Fill with zeros
set_fact:
item: "{{ item | combine(zero_fill, recursive=true) }}"
vars:
zero_fill: { 'json' : { 'data': { 'result': [{ 'value' : ["0.0","0.0"]}]}}}
when: item.json.data.result == []
with_items:
- "{{ requests.results }}"
这个变量的一个项目是这样的:
{
...
"json": {
"data": {
"result": [],
"resultType": "vector"
}
}
...
}
关键是在这个任务的输出中我确实看到了增加的价值,但是当我在任务之后立即打印它时,价值不存在。
【问题讨论】:
-
Ansible 的字典是不可变的。你必须创建一个新的。应该使用简单的结构。
-
当您修改
item时,您不是在循环或原始数据中修改它,您只是在“全局”创建一个item变量。您可以在循环后通过- debug: var=item看到这一点
标签: json loops dictionary ansible