Ansible:如何对set_fact模块中的整数变量进行算术运算?

Ansible: How to do arithmetic for integer variable in set_fact module?

有谁知道如何在set_fact模块中对整型变量进行算术赋值?目前,我设法通过使用 Jinja2 模板使用 String 变量来做到这一点,如下所示:

    - set_fact:
        flagStr: "0"

    - name: Add by one one one
      set_fact: 
        flagStr: "{{flagStr|int + 1 + 1 + 1}}"

    - name: debug total
      debug:
        msg:
          - "{{flagStr}}"

结果将 return 3 作为预期输出。但是,我不知道如何对整数变量执行此操作,因为在以相同方式执行此操作时会 return 出错。

我试过是这样的:

- set_fact:
        flagInt: 0

    - name: Add by one
      set_fact: 
        flagInt: flagStr + 1           #will return as 'flagInt + 1' 
        flagInt: {{flagInt}} + 1       #will return as syntax error
        flagInt: "{{flagInt}}" + 1     #will return as syntax error
        flagInt: "{{flagInt}} + 1"     #will return as '0 + 1'

    - name: debug total
      debug:
        msg:
          - "{{flagInt}}"

Q: "I don't know how to do that for integer variables as it will return an error when doing it the same way."

A:你做的不一样。与第一个示例相比,第二个示例中的所有四个选项都不同。事实上,字符串和整数在第一个例子中使用时给出相同的结果。

有必要计算表达式“{{ }}”。如果变量 flagStr 是整数 flagStr: 0,则无需将其转换为整数。它也没有伤害。下面的任务按预期工作。

    - set_fact:
        flagStr: 0
    - set_fact:
        flagStr: "{{ flagStr + 1 + 1 + 1 }}"
    - debug:
        var: flagStr