【发布时间】:2021-05-18 12:11:09
【问题描述】:
我正在尝试使用 terraform 创建公共路由表,但遇到以下错误。
错误:引用未声明的资源 │ │ 在 ..\modules\rt\ressources.tf 第 6 行,资源“aws_route_table”“public”中: │ 6: gateway_id = aws_internet_gateway.igw.id # 用IGW路由 │ │ module.public-rt 中未声明托管资源“aws_internet_gateway”“igw”。
这是我的 main.tf
# Create VPC
module "vpc" {
source = "../modules/vpc"
vpc_cidr_block = "************"
vpc_tags = { Name = "prod-vpc" }
vpc_id = module.vpc.vpcId # get vpc id
}
# Create IGW
module "igw" {
source = "../modules/igw"
igw_tags = { Name = "prod-igw" }
vpc_id = module.vpc.vpcId # attach vpc id to igw
igw_id = module.igw.igwId # get igw id
}
# Create Public Subnet
module "public-sn" {
source = "../modules/sn"
vpc_id = module.vpc.vpcId
sn_az = [ "************" ]
sn_cidr = [ "************" ]
sn_tags = [ "************" ]
}
# Create Private Subnets
module "private-sn" {
source = "../modules/sn"
vpc_id = module.vpc.vpcId
sn_az = [ "************", "************" ]
sn_cidr = [ "************", "************" ]
sn_tags = [ "************", "************" ]
}
# Create Public Route Table
module "public-rt" {
source = "../modules/rt"
vpc_id = module.vpc.vpcId
vpc_cidr_block = "************"
gateway_id = module.igw.igwId
}
这是我的 ressources.tf
# Routing table for public subnet
resource "aws_route_table" "public" {
vpc_id = var.vpc_id
route {
cidr_block = var.vpc_cidr_block # routing in the VPC
gateway_id = aws_internet_gateway.igw.id # routing with IGW
}
tags = var.public_rt_tags
}
这是我在 ../igw
中的 output.tf# Declare output variables for igw id
output "igwId" {
description = "IDs of the igw"
value = aws_internet_gateway.igw.id
}
非常感谢您的帮助。
【问题讨论】:
-
您是否真的尝试过在路由表规范中为 IGW 设置变量,例如
gateway_id = var.internet_gateway_id?请注意,您还必须将变量添加到variables.tf或您用于定义变量的任何文件中。 -
非常感谢马尔科。将条目添加到 vars.tf 后解决。
标签: terraform terraform-provider-aws