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

Terraform根模块传变量至子模块报错:重复变量声明

解决Terraform根模块变量重复声明错误

错误原因

这个报错和子模块变量名无关,是根模块内部重复定义了同名变量:你在根目录的main.tf第7行已经声明了variable "vpc_cidr_block",又在根目录的variables.tf中再次声明了同一个变量,而Terraform要求单个模块内的变量名必须唯一,因此触发错误。

解决方案

  • 清理根模块的重复变量声明
    打开根目录的main.tf,找到所有直接写在main.tf里的variable定义语句(比如第7行的variable "vpc_cidr_block" {}),将这些变量声明全部移动到根目录的variables.tf文件中。确保根模块的所有变量只在variables.tf中声明一次,main.tf仅负责使用变量(比如传递给子模块、配置AWS资源),不要在main.tf里定义变量。

  • 确认子模块变量传递逻辑
    你当前在根模块中向子模块传递变量的写法是正确的:

    module "myapp-subnet" {
      source = "./modules/subnet"
      subnet_cidr_block = var.subnet_cidr_block
      avail_zone = var.avail_zone
      env_prefix = var.env_prefix
      vpc_id = aws_vpc.myapp-vpc.id
      default_route_table = aws_vpc.myapp-vpc.default_route_table_id
    }
    

    子模块的变量名和根模块同名完全没问题,只要根模块内部没有重复声明,Terraform会正常从terraform.tfvars读取根模块变量的值,再传递给子模块。

  • 验证修复效果
    完成清理后,在根目录终端依次执行:

    terraform init
    terraform validate
    

    若validate返回Success! The configuration is valid.,说明问题已解决。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.11 02:35:35