我想使用主机的系统数值乘以数字/百分比作为变量的基础。我具体要做的是使用CouchBase值并将其与.80相乘,得到一个ansible_memtotal_mb
,然后在设置CouchBase值时使用。我一直在尝试下面这行代码的不同变体。我不确定这是否可能,但任何帮助都将不胜感激。
vars:
ramsize: '"{{ ansible_memtotal_mb }}" * .80'
发布于 2015-11-04 06:54:45
你真的很接近了!我使用计算来设置一些默认的java内存大小,这与您正在做的事情类似。下面是一个例子:
{{ (ansible_memtotal_mb*0.8-700)|int|abs }}
这说明了一些事情-首先,它使用了jinja math,所以在{{ jinja }}
中进行计算。其次,int
和abs
做了您所期望的事情--确保结果是一个无符号整数。
在您的例子中,正确的代码应该是:
vars:
ramsize: "{{ ansible_memtotal_mb * 0.8 }}"
发布于 2020-05-22 16:48:09
还有一件小事要补充。如果您假设数学乘法优先于jinja filter (| sign),那么您就错了;-)
值如下所示
total_rate: 150
host_ratio: 14 #百分比
"{{ total_rate*host_ratio*0.01|int }}" => 0 because 0.01|int = 0
"{{ (total_rate*host_ratio*0.01)|int) }}" => 21 as one expects
https://stackoverflow.com/questions/33505521
复制相似问题