使用 ansible 对 item 进行算术运算

使用 ansible 对 item 进行算术运算

我想循环添加每个项目。

例如 :

变量:

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 }}"

相关内容