首页 > 解决方案 > count = number 和 bool 上的符号

问题描述

我已经看到了帖子的答案 -在 terraform 中是否有一种 AND/OR 条件运算符?- 它提到 terraform 会将 bool 转换为 1 或 0,但是,我无法让它工作 - 似乎这是特定于 0.11 及更早版本?

我正在尝试使用计数进行计数,signum(true * 0)但这只是不断返回invalid operand <bool/number> required

这在 terraform 11 中确实有效,但在我尝试升级到 12/13 时似乎没有。我们有一个大型存储库,如果我能让它工作而不是将所有布尔值转换为数字,那会更容易。有人可以澄清一下这在版本 12 或更高版本中是否可行?

完整的例子是:

count = signum(var.cluster_size_max * var.with_external_elb)

如果cluster_size_max设置为 1 或更多并且external_elb是,则构建外部 ELB true

注意:我尝试过使用&&而不是,signum但这也不起作用。我得到的错误是相似的:

count                    = var.cluster_size_max && var.with_external_elb ? 1 : 0
----------------
var.cluster_size_max is 1
Unsuitable value for left operand: bool required.

标签: amazon-web-servicesterraform

解决方案


您不需要将该signum函数用于简单的条件语句。

&&用作and,用于>检查var.cluster_size_max& 的值 使用+?作为:三元运算符,根据and结果确定最终的整数值 1 或 0。

尝试:

count = var.with_external_elb && var.cluster_size_max > 0 ? 1 : 0


推荐阅读