【发布时间】:2021-01-11 20:57:21
【问题描述】:
我是 terraform 的新手,正在尝试构建具有两个子网和 VPC 的基础架构。我创建了两个模块
- VPC
- 子网
VPC 模块将创建一个 VPC 并将返回 vpc_id 作为输出,这与我尝试在子网模块中使用的相同返回 vpc_id,但是当我运行 terraform 计划时,它要求我输入 vpc_id 输入。
我想要 VPC 模块的输出值中的 vpc_id,任何人都可以帮助我。
下面是代码,
根 tf 文件,
provider "aws" {
shared_credentials_file = var.shared_cred
profile = "default"
region = var.aws_region
}
module "vpc" {
source = "./vpc"
name = "terraformVPC"
cidr = "10.50.40.0/27"
}
module "private_subnet" {
source = "./subnet"
subnet_name = "private_subnet"
subnet_cidr = "10.50.40.16/28"
#VPC_id = aws_vpc.moduleVPC.id
VPCid = module.vpc.outvpc_id # this is the issue
}
module "public_subnet" {
source = "./subnet"
subnet_name = "public_subnet"
subnet_cidr = "10.50.40.0/28"
VPCid = module.vpc.outvpc_id
}
子网资源
resource "aws_subnet" "module_subnet" {
cidr_block = var.subnet_cidr
vpc_id = var.VPCid
tags = {
Name = var.subnet_name
}
}
子网模块变量声明
variable "subnet_name" {
description = " define th subnet name"
}
variable "subnet_cidr" {
description = "define th subnet cidr block"
}
variable "VPCid" {
description = "Assign VPC id to subnet"
}
VPC 输出
output "outvpc_id" {
value = "${aws_vpc.moduleVPC.id}"
}
【问题讨论】:
-
应该是
value = aws_vpc.moduleVPC.id而不是value = "${aws_vpc.moduleVPC.id}"。我认为您应该有一条错误消息告诉您这一点? -
嗨 Liam,我没有收到错误,但要求输入 vpc_id 变量,我认为两者都执行相同的操作 value = aws_vpc.moduleVPC.id 和 value = "${aws_vpc.模块VPC.id}"
标签: amazon-web-services terraform amazon-vpc terraform-modules