You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Terraform模块调用时tfvars不生效,如何配置无需手动传参执行apply?

问题根因

你遇到的问题由两个Terraform的内置规则导致:

  1. Terraform不会主动读取任意子模块内部的.tfvars文件,所有子模块的输入变量必须由调用方(此处为根模块)显式传值,所以你最开始把variables.tfvars放在子模块目录下的方案本身是无效的。
  2. 调整到根目录后,你使用的variables.tfvars文件名不符合Terraform自动加载变量文件的命名规则,Terraform默认只会自动加载两类变量文件:
    • 命名为terraform.tfvars、terraform.tfvars.json的文件
    • 文件名以.auto.tfvars、.auto.tfvars.json结尾的文件
      不符合上述规则的变量文件,Terraform不会自动读取,因此执行命令时会提示你手动输入变量值。

调整方案

方案1(推荐,无需修改执行命令)

将根目录下的variables.tfvars重命名为terraform.tfvars,或重命名为任意以.auto.tfvars为后缀的文件(比如kubernetes.auto.tfvars),不需要修改其他配置,直接执行terraform apply即可自动读取变量值,无需手动传入。

注意要提前确认根目录的variables.tf中已经正确声明了kubernetes_version、node_hosts两个变量,变量类型要和子模块中声明的对应变量类型保持一致。

方案2(不修改文件名,调整执行命令)

如果需要保留variables.tfvars的文件名,执行命令时显式指定加载该变量文件即可:

terraform apply -var-file=variables.tfvars -auto-approve

内容的提问来源于stack exchange,提问作者ChrisAdkin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 04:42:02