Terraform 0.11中null_resource无输出及validate无报错问题求助
问题分析与解决方案
1. 核心问题:Terraform 0.11 不支持多变量locals块语法
你写的locals { ... }是Terraform 0.12及以上版本的语法,0.11中局部变量必须通过单独的local块定义,每个变量对应一个块。这导致0.11无法识别local.keys和local.values,最终length(local.keys)计算结果为0,null_resource的count=0,所以没有资源被创建,apply显示无变更。
2. 修正后的配置代码
将局部变量定义改为0.11兼容的格式,同时修正引用路径:
# 0.11 局部变量定义方式:每个变量单独用local块 local "keys" { value = ["rds.force_ssl", "ssl"] } local "values" { value = ["1", "2"] } resource "null_resource" "rds_dbparam_mapping" { count = "${length(local.keys.value)}" triggers { name = "${element(local.keys.value, count.index)}" value = "${element(local.values.value, count.index)}" } } output "rds_dbparams" { value = "${null_resource.rds_dbparam_mapping.*.triggers}" }
3. 关于terraform validate无输出的问题
Terraform 0.11的validate命令仅检查HCL的基本语法结构,不会验证变量引用、资源逻辑的正确性,甚至部分语法错误(比如函数参数错误)都无法检测。要排查配置逻辑问题,建议使用terraform plan,它会完整解析配置并输出资源变更计划,能发现未定义的变量、函数调用错误等问题。
4. 如何查看输出结果
Terraform 0.11中terraform apply完成后不会自动打印输出内容,需要执行以下命令查看:
terraform output
内容的提问来源于stack exchange,提问作者Rad4
相关产品推荐
相关产品推荐

