You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform 12及以上版本是否支持布尔值自动转数字用于count计算?

行为原因说明

Terraform 0.11及更早版本确实支持布尔值自动隐式转换为1/0数值,但从0.12版本开始官方引入了强类型校验机制,彻底取消了不同类型之间的隐式自动转换,你遇到的报错属于高版本的预期行为,旧的隐式转换写法在0.12及后续所有版本中都不再原生支持。

低成本适配方案

无需全量手动替换所有布尔值,仅需对原有逻辑做极小修改即可兼容高版本,完全匹配你的原有业务逻辑:

  • 原signum乘法逻辑修改方案:
    仅需给布尔变量增加一行三元转换即可,逻辑和原有写法完全一致:
    count = signum(var.cluster_size_max * (var.with_external_elb ? 1 : 0))
    
  • 条件判断写法修复方案:
    &&运算符要求两侧均为布尔值,你只需要把左侧的数值先转成布尔判断即可:
    count = (var.cluster_size_max >= 1) && var.with_external_elb ? 1 : 0
    
    该写法可读性更高,和你需要的「cluster_size_max≥1且with_external_elb为true时创建资源」的逻辑完全匹配。

批量优化方案

如果仓库中这类隐式转换逻辑非常多,你可以封装一个全局通用的转换映射,所有场景统一调用即可,不用逐个修改:

locals {
  bool_to_num = {
    true  = 1
    false = 0
  }
}

后续所有需要布尔转数字的场景直接用local.bool_to_num[var.布尔变量名]调用即可,后续如果有规则调整仅需修改一次本地映射值。

内容的提问来源于stack exchange,提问作者scrow

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 10:06:04