Math 用jinja2滤波器对变量集进行Ansible算术运算

Math 用jinja2滤波器对变量集进行Ansible算术运算,math,filter,ansible,jinja2,Math,Filter,Ansible,Jinja2,我想设置一个变量,该变量是使用角色中的jinja过滤器提取的值的一小部分。我试图做的是: - name: Get size of FS set_fact: tmp_size_b: "{{ ansible_mounts | selectattr('device', 'match', '^/dev/mapper/root_vg-lv_tmp$') | map(attribute='size_total') | list }}" - name: Convert unit set_fa

我想设置一个变量,该变量是使用角色中的jinja过滤器提取的值的一小部分。我试图做的是:

- name: Get size of FS
  set_fact:
    tmp_size_b: "{{ ansible_mounts | selectattr('device', 'match', '^/dev/mapper/root_vg-lv_tmp$') | map(attribute='size_total') | list }}"

- name: Convert unit
  set_fact:
    tmp_size_k: "{{ tmp_size_b / 1024 }}"

如何将使用jinja过滤器提取的字符串转换为一个可以在以后操作的数字。我尝试在过滤器中的
|list
之后添加
|int
,但没有成功

tmp\u size\u b
是示例中的一个列表。你试着划分列表

您可能想要:

- name: Get size of FS
  set_fact:
    tmp_size_b: >
                {{ ansible_mounts
                   | selectattr('device', 'match', '^/dev/mapper/root_vg-lv_tmp$')
                   | map(attribute='size_total')
                   | list 
                   | first }}

- name: Convert unit
  set_fact:
    tmp_size_k: "{{ (tmp_size_b | int) / 1024 }}"

您希望在
{…}
内部使用
|int
,因为表达式外部不能有int变量。

tmp\u size\u b
是示例中的一个列表。你试着划分列表

您可能想要:

- name: Get size of FS
  set_fact:
    tmp_size_b: >
                {{ ansible_mounts
                   | selectattr('device', 'match', '^/dev/mapper/root_vg-lv_tmp$')
                   | map(attribute='size_total')
                   | list 
                   | first }}

- name: Convert unit
  set_fact:
    tmp_size_k: "{{ (tmp_size_b | int) / 1024 }}"

您想在
{…}
内部使用
|int
,因为表达式外部不能有int变量。

您能调试tmp_size_b吗?-debug:msg=“{tmp_size_b}”它给了我:“msg”:[2136997888]你能调试tmp_size_b吗?-debug:msg=“{tmp_size_b}”它给了我:“msg”:[2136997888]