![使用 ansible 对 item 进行算术运算](https://linux22.com/image/739343/%E4%BD%BF%E7%94%A8%20ansible%20%E5%AF%B9%20item%20%E8%BF%9B%E8%A1%8C%E7%AE%97%E6%9C%AF%E8%BF%90%E7%AE%97.png)
我想循环添加每个项目。
例如 :
变量:
FS:
- nom_FS: /apps/oracle/{{ SID | lower }}/syst01
nom_LV: "lv{{ TRIGRAMME | lower }}syst01"
size_FS: 20
owner_FS: oracle
group_FS: dba
vg_name: vgdata
- nom_FS: /apps/oracle/{{ SID | lower }}/syst02
nom_LV: "lv{{ TRIGRAMME | lower }}syst02"
size_FS: 20
owner_FS: oracle
group_FS: dba
vg_name: vgdata
剧本:
- name: size FS
shell: /bin/echo "({{item.size_FS.0}}+{{item.item.size_FS.1}})" | bc
register: check_size_disk
with_items: "{{ FS }}"
我尝试了其他方法,但没有成功......
请问你能帮帮我吗 ?
答案1
简单添加即可
- debug:
msg: "{{ size_FS1 + size_FS2 }}"
为了确保字符串将被转换,请使用整数筛选。
- debug:
msg: "{{ size_FS1|int + size_FS2|int }}"
要循环添加每个项目,简单的加法也可以
- set_fact:
sum: "{{ sum|default(0)|int + item|int }}"
loop: "{{ FS|json_query('[].size_FS') }}"
最简单的选择是使用和筛选。
- set_fact:
sum: "{{ FS|map(attribute='size_FS')|list|sum }}"