首页 > 解决方案 > 无法在 Ansible jinja2 模板中检查大于条件的变量

问题描述

我的 jinja2 模板为变量生成正确的值

{{ vars[fruit | join("")] | default('ERR') }}

变量fruit 的值为83.6,它由Ansible 的模板模块打印。

我想在 jinja2 模板中写一个 if 条件,我想检查变量 fruit 的值是否大于 70

{% if ( vars[fruit | join("")] | int ) > 70 %}

超过 70 个

{% 万一 %}

但是,当我期望它成功时,“如果”条件失败了。

我还尝试了以下方法:

{% if ( vars[fruit | join("")] | int  > 70 ) %}

我也试过

{% if vars[fruit | join("")] | int  > 70 %}

但是,他们都没有工作。你能告诉我需要做什么来满足if条件吗?

标签: templatesansibleconditional-statementscomparisonjinja2

解决方案


int过滤器不接受带点的字符串。您应该通过使用round过滤器将其向下舍入来将其转换为浮点数:

{% if ( vars[fruit | join("")] | round(method='floor')) > 70 %}

推荐阅读