Python Ansible:在嵌套字典中添加值,然后插入到另一个字典中
我正在迭代下面的字典字典,希望添加嵌套字典的值并将它们插入到另一个字典中Python Ansible:在嵌套字典中添加值,然后插入到另一个字典中,python,ansible,Python,Ansible,我正在迭代下面的字典字典,希望添加嵌套字典的值并将它们插入到另一个字典中 主节点 ok: [127.0.0.1] => { "msg": { "master01.example.com": { "cpu_total": 8, "cpu_used": 0.22 }, "master02.example
主节点
ok: [127.0.0.1] => {
"msg": {
"master01.example.com": {
"cpu_total": 8,
"cpu_used": 0.22
},
"master02.example.com": {
"cpu_total": 8,
"cpu_used": 0.27
},
"master03.example.com": {
"cpu_total": 8,
"cpu_used": 0.22
}
}
}
我正在尝试类似的事情,并努力想出一个解决方案
-名称:主节点的总节数
设定事实:
total_master:“{(total_master{默认值({}))|组合({'total_cpu':total_cpu+(item.value.cpu_total{int)}}”
使用{dict:{{master_nodes}}”
我试图在total\u master中实现的目标
ok: [127.0.0.1] => {
"msg": {
"total_cpu": 24,
"total_used_cpu": 0.71
}
}
嵌套循环应该可以工作
sum1 = 0
sum2 = 0
for val in dict.values():
for val1 in val.values():
sum1+=val1['cpu_total']
sum2+=val1['cpu_used']
result =
{
"msg": {
"total_cpu": sum1,
"total_used_cpu": sum2
}
}
print(result)
输出:
{'msg': {'total_cpu': 24, 'total_used_cpu': 0.71}}
嵌套循环应该可以工作
sum1 = 0
sum2 = 0
for val in dict.values():
for val1 in val.values():
sum1+=val1['cpu_total']
sum2+=val1['cpu_used']
result =
{
"msg": {
"total_cpu": sum1,
"total_used_cpu": sum2
}
}
print(result)
输出:
{'msg': {'total_cpu': 24, 'total_used_cpu': 0.71}}
这可能是一种选择:
-设置事实:
结果:{result | default({})| combine({item:master_nodes | json_query('@.*')| sum(attribute=item)}}
循环:
-cpu_总数
-使用的cpu
-调试:
var:结果
给予
ok:[localhost]=>
结果:
中央处理器总数:24
使用的cpu_:0.71
另一种味道
-设置事实:
结果:“{{
'total_cpu':主节点| json_查询('@.*.cpu_total')| sum(),
'total_cpu_used':主节点| json_查询('@.*.cpu_used')| sum()
} }}"
-调试:
var:结果
给予
ok:[localhost]=>
结果:
cpu总数:24
使用的cpu总量:0.71
这可能是一个选项:
-设置事实:
结果:{result | default({})| combine({item:master_nodes | json_query('@.*')| sum(attribute=item)}}
循环:
-cpu_总数
-使用的cpu
-调试:
var:结果
给予
ok:[localhost]=>
结果:
中央处理器总数:24
使用的cpu_:0.71
另一种味道
-设置事实:
结果:“{{
'total_cpu':主节点| json_查询('@.*.cpu_total')| sum(),
'total_cpu_used':主节点| json_查询('@.*.cpu_used')| sum()
} }}"
-调试:
var:结果
给予
ok:[localhost]=>
结果:
cpu总数:24
使用的cpu总量:0.71
感谢您的回复。我就是这样做的
- name: Total section for master nodes
set_fact:
master_cpu: "{{ (master_cpu|float) + (item.value.cpu_total|float)}}"
master_cpu_used: "{{ (master_cpu_used|float |round(2,'ceil')) + (item.value.cpu_used|float |round(2,'ceil'))}}"
with_dict: "{{master_nodes}}"
谢谢你的回复。我就是这样做的
- name: Total section for master nodes
set_fact:
master_cpu: "{{ (master_cpu|float) + (item.value.cpu_total|float)}}"
master_cpu_used: "{{ (master_cpu_used|float |round(2,'ceil')) + (item.value.cpu_used|float |round(2,'ceil'))}}"
with_dict: "{{master_nodes}}"
谢谢你的回复,但我想在我的ansible剧本中这样做。我已经附上了样品。谢谢你的回复,但我想在我的ansible剧本中这样做。我已附上样品。