如何访问两个不同的 Terraform 代码之间的资源 ID
How to access the resource ids between two different terraform code
我有 2 个 aws 账户,分别有相应的 terraform 代码:
在 account_no_01 中,我有一个 tgw 模块
module "transit-gateway" {}
在account_no_02中,我想获取账号1中创建的tgw的id:
resource "aws_ec2_transit_gateway_vpc_attachment" "tgw_nprod" {
subnet_ids = [module.vpc.private_subnets[0]]
transit_gateway_id = "TGW ID HERE FROM ACCOUNT 01 CREATED WITH MODULE"
vpc_id = module.vpc.vpc_id
}
目录结构是这样的:
/acount01/main.tf and /account02/main.tf
如果两个账户由一个状态文件管理,可以使用module outputs。
如果两个帐户是单独创建的,您可以在 terraform 中使用数据模块来引用不受 terraform 管理或由不同状态文件管理的资源。
记录了中转网关数据资源的关键选项here。
最简单的方法是在您的帐户 2 构建的配置中添加 ID 值,并以这种方式引用它。如果那不可能,您可以在标签中添加一个友好的名称,并使用过滤器在其他地方找到它:
data "aws_ec2_transit_gateway" "tgw" {
filter {
name = "tag:Name"
values = ["my-transit-gw"]
}
}
我有 2 个 aws 账户,分别有相应的 terraform 代码: 在 account_no_01 中,我有一个 tgw 模块
module "transit-gateway" {}
在account_no_02中,我想获取账号1中创建的tgw的id:
resource "aws_ec2_transit_gateway_vpc_attachment" "tgw_nprod" {
subnet_ids = [module.vpc.private_subnets[0]]
transit_gateway_id = "TGW ID HERE FROM ACCOUNT 01 CREATED WITH MODULE"
vpc_id = module.vpc.vpc_id
}
目录结构是这样的:
/acount01/main.tf and /account02/main.tf
如果两个账户由一个状态文件管理,可以使用module outputs。
如果两个帐户是单独创建的,您可以在 terraform 中使用数据模块来引用不受 terraform 管理或由不同状态文件管理的资源。
记录了中转网关数据资源的关键选项here。
最简单的方法是在您的帐户 2 构建的配置中添加 ID 值,并以这种方式引用它。如果那不可能,您可以在标签中添加一个友好的名称,并使用过滤器在其他地方找到它:
data "aws_ec2_transit_gateway" "tgw" {
filter {
name = "tag:Name"
values = ["my-transit-gw"]
}
}