首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Ansible中设置变量值时使用算术?

如何在Ansible中设置变量值时使用算术?
EN

Stack Overflow用户
提问于 2015-11-04 01:30:43
回答 2查看 78K关注 0票数 66

我想使用主机的系统数值乘以数字/百分比作为变量的基础。我具体要做的是使用CouchBase值并将其与.80相乘,得到一个ansible_memtotal_mb,然后在设置CouchBase值时使用。我一直在尝试下面这行代码的不同变体。我不确定这是否可能,但任何帮助都将不胜感激。

代码语言:javascript
复制
vars:
  ramsize: '"{{ ansible_memtotal_mb }}" * .80'
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-11-04 06:54:45

你真的很接近了!我使用计算来设置一些默认的java内存大小,这与您正在做的事情类似。下面是一个例子:

代码语言:javascript
复制
{{ (ansible_memtotal_mb*0.8-700)|int|abs }}

这说明了一些事情-首先,它使用了jinja math,所以在{{ jinja }}中进行计算。其次,intabs做了您所期望的事情--确保结果是一个无符号整数。

在您的例子中,正确的代码应该是:

代码语言:javascript
复制
vars:
  ramsize: "{{ ansible_memtotal_mb * 0.8 }}"
票数 99
EN

Stack Overflow用户

发布于 2020-05-22 16:48:09

还有一件小事要补充。如果您假设数学乘法优先于jinja filter (| sign),那么您就错了;-)

值如下所示

total_rate: 150

host_ratio: 14 #百分比

代码语言:javascript
复制
"{{ total_rate*host_ratio*0.01|int }}" => 0 because 0.01|int = 0
"{{ (total_rate*host_ratio*0.01)|int) }}" => 21 as one expects
票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33505521

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档