我想设置一个变量,该变量是角色中使用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过滤器提取的字符串转换为可以在以后操作的数字。我尝试在过滤器中| int
之后添加| list
,但是没有做到这一点。
答案 0 :(得分:2)
tmp_size_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变量。