【发布时间】:2019-11-28 17:27:21
【问题描述】:
我有一些共享的 terraform 模块,目前被许多基于 terraform 0.11 的项目使用。我想逐步将项目迁移到 0.12 并尝试保留模块与 0.11 和 0.12 的兼容性。 我在使用列表属性时遇到了问题,这些属性已经从括号语法中改变了。
在 terraform 0.11 中,需要在单个表达式周围加上方括号,以便向语言解释器提示需要列表解释:
# Example for older versions of Terraform; not valid for v0.12
example = ["${var.any_list}"]
在 terraform 0.12 中,像上面这样的表达式现在将生成列表列表,因此对于任何期望其他类型列表的参数都会产生类型检查错误。
# Example for Terraform v0.12
example = var.any_list
是否可以同时兼容 0.11 和 0.12 的方式设置 list 属性?
【问题讨论】:
-
抱歉,这几乎是不可能的。不仅列表,而且几乎 hcl 语法已更改。如果您将 git 用于模块,我认为您最好将模块修改为 0.12 并制作新版本标签。比如 v1.x 支持 terraform 0.11 和 v2.x 支持 terraform 0.12。
-
@RyanKim 我正在使用 S3 来托管模块,因此必须在存储桶中单独创建 terraform 0.12 兼容版本。这是迄今为止我发现的唯一不兼容 hcl1 的东西。
标签: terraform