为何我的Terraform简单for循环报错?求排查提示
Terraform For表达式过滤错误排查
错误原因
你在for表达式的if条件里错误使用了Terraform的插值语法${}。在HCL的纯表达式上下文(比如if判断语句)中,不需要用${}包裹变量引用,直接通过点语法访问属性即可。
修正后的代码
locals { cmpgdb_swid = "cmpgdb" cmpgdb_path = "pg" cmpgdb_prefix = "cmpgdb-pg-" cmpgdb_dbadmin = "-pguser-dbadmin" cmpgdb_dbowner = "-pguser-dbowner" filtered_apps = { for app in local.yaml_data : "${app.swid}.${app.instance}" => app if app.swid == local.cmpgdb_swid } }
补充说明
- 插值语法
${}仅用于在字符串字面量中嵌入表达式,比如你在map的键"${app.swid}.${app.instance}"里的用法是正确的,因为这是字符串拼接场景。 - 在
if条件、变量赋值这类纯表达式场景下,直接使用变量/属性的引用形式即可,Terraform会自动解析。
内容的提问来源于stack exchange,提问作者mzwettler
相关产品推荐
相关产品推荐

