Terraform 模板文件中如何实现部分代码的条件执行?
Terraform 模板文件条件渲染实现方案
你之前的写法错误是混用了变量插值语法和条件控制语法:${}是Terraform模板中用于输出变量值的标记,不能直接放在条件判断的语句块内,且条件控制块的起始标记错误。
正确模板写法
将test.sh.tpl修改为如下内容即可:
#!/bin/bash %{ if test_key != "" ~} echo ${test_key} > /opt/test_key.properties %{ endif ~}
语法说明
- Terraform模板的条件控制语句必须以
%{开头、}结尾,和变量插值用的${}语法完全区分 - 条件判断中直接引用变量名即可,不需要额外加
${}包裹 - 控制符前后加
~是可选配置,作用是自动修剪对应方向的空白/换行,避免生成的Shell脚本出现多余空行 - 如果你的
test_key变量可能为null值,建议把判断条件调整为%{ if test_key != null && test_key != "" ~},覆盖空值、空字符串两种场景
调用示例(可选)
如果使用Terraform官方推荐的templatefile函数调用模板,参考写法如下:
resource "local_file" "generated_script" { content = templatefile("${path.module}/test.sh.tpl", { test_key = var.test_key # 替换为你实际的test_key赋值逻辑 }) filename = "${path.module}/output/test.sh" }
内容的提问来源于stack exchange,提问作者pavan
相关产品推荐
相关产品推荐

