【发布时间】:2021-12-09 01:15:13
【问题描述】:
我已经看到帖子的答案 - Is there a way AND/OR conditional operator in terraform? - 其中提到 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 为 true,则构建外部 ELB。
注意:我尝试使用 && 代替 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.
【问题讨论】:
-
你为什么要尝试做一些奇怪的魔法而不是明确地写出来?
var.with_external_elb && var.cluster_size_max > 0 ? 1 : 0 -
嗨,卢克,谢谢。我在 terraform 控制台中对其进行了测试,但这似乎仍然无法正常工作,因为 external_elb 是一个布尔值。我跑了: 1 && true > 0 ? 1 :0 -- 不确定我是否遗漏了什么?错误是一样的,需要一个数字
-
在我的第一条评论中有一个
> 0,您不能简单地省略或更改其位置。bool && int > threshold格式良好,true && 1 > 0 ? 1 : 0有效。 -
对不起,我没有想到 - 我试图将 > 0 放在 bool 之后。另一个问题。我猜如果有&&,那么就不需要signum,因为它仍然只会构建0或1。我的理解是否正确?
-
signum可以返回当前 sn-p 不能返回的 -1 - 但这是一件好事,因为无论如何您都不需要 -1。
标签: amazon-web-services terraform