我正在创建一个两个VPC部署。两个VPC都是通过模块部署的。在模块VPC01中,我使用以下方法定义dhcp选项:
resource "aws_vpc_dhcp_options" "dhcp_domain_name" {
domain_name = var.domain_name
tags = {
Name = var.domain_name
Creator = var.creator_name
}
}
resource "aws_vpc_dhcp_options_association" "dns_resolver" {
vpc_id = aws_vpc.infra-vpc.id
dhcp_options_id = aws_vpc_dhcp_options.dhcp_domain_name.id
}
因此,在部署此vpc时,这将定义vpc选项。现在,当我想要部署我的发送vpc时,如何将此vpc与创建的同一个vpc选项集关联起来呢?
我试着用:
resource "aws_vpc_dhcp_options_association" "dns_resolver" {
vpc_id = aws_vpc.infra-vpc.id
dhcp_options_id = aws_vpc_dhcp_options.dhcp_domain_name.id
}
当我这样做时,我会得到这样的错误:
Error: Reference to undeclared resource
on modules/vpc-intapp/infra-vpc.tf line 173, in resource "aws_vpc_dhcp_options_association" "dns_resolver":
173: dhcp_options_id = aws_vpc_dhcp_options.dhcp_domain_name.id
A managed resource "aws_vpc_dhcp_options" "dhcp_domain_name" has not been
declared in module.vpc-intapp.
我需要以某种方式将vpc选项的值输入我的第二个模块。那我该怎么做?
发布于 2021-03-31 21:08:45
模块不能直接引用在其他模块中创建的资源。如果您希望多个模块共享/引用资源,则需要在模块之外创建资源,并将其作为输入变量传递给两个模块,或者需要将其定义为来自一个模块的输出,并将其作为输入传递给另一个模块。
既然您已经创建了第一组资源,那么我将选择第二个选项。将其添加到第一个VPC模块:
output "vpc_dhcp_options_id" {
value = aws_vpc_dhcp_options.dhcp_domain_name.id
}
将其添加到第二个VPC模块:
variable "vpc_dhcp_options_id" {}
并将第二个VPC模块更改为使用模块的输入变量:
resource "aws_vpc_dhcp_options_association" "dns_resolver" {
vpc_id = aws_vpc.infra-vpc.id
dhcp_options_id = var.vpc_dhcp_options_id
}
最后,将第一个模块的输出值作为输入值传递给第二个模块:
module "my_first_vpc" {
source = "..."
}
module "my_second_vpc" {
source = "..."
vpc_dhcp_options_id = module.my_first_vpc.vpc_dhcp_options_id
}
https://stackoverflow.com/questions/66893553
复制相似问题