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
有谁知道如何在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