试图将变量从根模块传递到子模块并得到错误



我是新的Terraform所以仍然试图找出模块是如何工作的。我当时正在做一个演示项目,我成功地在main中设置了各种AWS资源。tf,起程拓殖。tfvar和变量。

我现在正试图将资源组织到模块中。我设置了一个子模块,并设置了自己的主模块。tf,变量。Tf和输出。tf文件。我在子main中引用/声明了变量。Tf到子变量。tf文件。这些变量都在根地形中定义。tfvars文件。

当我尝试运行"terraform init"从根终端,它给出这个错误

Error: Duplicate variable declaration
│
│ on variables.tf line 1:
│ 1: variable "vpc_cidr_block" {}
│
│ A variable named "vpc_cidr_block" was already declared at main.tf:7,1-26. Variable names must be
│ unique within a module.

基本上对每个变量都这样做(一次出现多个错误)。我做错了什么?我已经假设它会自动进入到根地形。Tfvars文件查找变量的值,如果这是问题的话。它们在子变量中的命名都是一样的。就像它们在根变量里一样。如果是的话,这可能是问题所在吗?我有点迷路了,所以任何熟悉这方面的人的帮助将是非常感激的。

编辑:更多的上下文,这是我的语法从主要。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

根据评论。问题是在模块中,variable "vpc_cidr_block"被定义了两次。一个定义在main.tf,第二个定义在variables.tf

最新更新