Terraform中var=local.var与var="${local.var}"的区别及意义
Terraform子模块传递本地变量的写法对比
先直接给结论:在Terraform 0.12及以后的版本里,你给出的两种写法功能完全一致,都能正确把本地变量local.var的值传递给子模块的输入变量var。
为什么会存在第二种带${}的写法?
- 这是旧版本遗留的习惯:在Terraform 0.11及更早版本中,引用变量、本地值这类动态值时,必须用插值语法
${}包裹才能生效,当时只能这么写。现在新版本已经支持直接引用,无需再套插值语法。 - 个人使用惯性:有些长期使用Terraform的开发者写惯了插值语法,哪怕不需要做字符串拼接,也会顺手加上
${}。
单独写var = "${local.var}"有实际意义吗?
完全没有额外的功能价值,它和直接写local.var是完全等价的。唯一可能的特殊场景是强制将非字符串类型的值转为字符串,但这种情况极少——Terraform会自动处理类型转换,只要子模块的输入变量类型与你传递的值匹配,就不会有问题。
推荐哪种写法?
优先选择第一种var = local.var,因为它更简洁,符合Terraform现代语法规范,可读性也更好。
内容的提问来源于stack exchange,提问作者codeforester
相关产品推荐
相关产品推荐

