是否有一种快捷方式可以在 ansible 中对列表的内容求和?

Is there a shortcut to sum the contents of a list in ansible?

我有一个列表 sList 为:

sList = ['12','8','10']

我需要 sList.
所有元素的总和 我在 jinja2 中遇到了 sum() 函数,但它需要属性等,并且不确定如何将它与 list.
一起使用 我试过了:

- set_fact:
    sList:
      - '12'
      - '8'
      - '10'

- set_fact:
    sumList: "{{ sum(sList) }}" 

- debug: var=sumList

预期结果:sumList = 30,但低于错误:

"msg": "The task includes an option with an undefined variable. The error was: 'sum' is undefined 

请帮忙。

谢谢

过滤器sumReturns一串数字的总和。变量 sList 是一个字符串列表。下面的任务将失败

    - set_fact:
        sList: ['12', '8', '10']
    - set_fact:
        sumList: "{{ sList|sum }}"

fatal: [localhost]: FAILED! => msg: 'Unexpected templating type error occurred on ({{ sList|sum }}): unsupported operand type(s) for +: ''int'' and ''AnsibleUnicode'''

要解决这个问题,请使用数字列表。例如

    - set_fact:
        sList: [12, 8, 10]
    - set_fact:
        sumList: "{{ sList|sum }}"
    - debug:
        var: sumList

给予

  sumList: '30'

下一个选项是将列表项转换为数字。映射 int or float 函数。例如

    - set_fact:
        sList: ['12', '8', '10']

    - set_fact:
        sumList: "{{ sList|map('int')|sum }}"
    - debug:
        var: sumList

    - set_fact:
        sumList: "{{ sList|map('float')|sum }}"
    - debug:
        var: sumList

给予

  sumList: '30'

  sumList: '30.0'