我想设置一个变量,它是用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
,但这并没有起作用。
发布于 2018-02-19 08:10:29
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变量。
https://stackoverflow.com/questions/48868875
复制