terraform - 有条件地运行 terraform 模块
问题描述
我正在尝试有条件地运行模块。下面是代码。如果提供了值,它可以正常工作,但如果 var.accounts[*].vpc_ids 为空白,则无法说明 var.vpc_id 不能为空。但这基本上是模块应该运行的条件。如果 vpc_id 计数为 0,则模块不应运行。请帮忙。
resource "aws_ec2_transit_gateway_vpc_attachment" "this" {
transit_gateway_id = var.transit_gateway_id
vpc_id = var.vpc_id
subnet_ids = var.subnet_ids
dns_support = "disable"
ipv6_support = "disable"
transit_gateway_default_route_table_association = false
transit_gateway_default_route_table_propagation = false
}
locals {
create_tgw_attach = var.accounts[*].vpc_ids != "" ? true : false
}
module "tgw_peer2" {
source = "../modules/tgw"
count = length(var.accounts[2].vpc_ids)
providers = {
aws = aws.accepter2
}
create_tgw_attach = local.create_tgw_attach
transit_gateway_id = aws_ec2_transit_gateway.this.id
vpc_id = var.accounts[2].vpc_ids[count.index]
subnet_ids = var.accounts[2].vpc_subnets[count.index].subnet_ids
destination_cidr_block = var.destination_cidr_block_route
share_tgw = true
create_tgw = false
}
module "tgw_peer3" {
source = "../modules/tgw"
create_tgw_attach = local.create_tgw_attach
count = length(var.accounts[3].vpc_ids)
providers = {
aws = aws.accepter3
}
transit_gateway_id = aws_ec2_transit_gateway.this.id
vpc_id = var.accounts[3].vpc_ids[count.index]
subnet_ids = var.accounts[3].vpc_subnets[count.index].subnet_ids
share_tgw = true
create_tgw = false
}
解决方案
我试图将我使用的 vpc_id 的条件作为模块中的值。我修改了条件并且它起作用了。下面是代码。
module "tgw_peer1" {
source = "./modules/tgw"
providers = {
aws = aws.accepter1
}
count = var.accounts[1].account_id != "" ? length(var.accounts[1].vpc_ids) : 0
transit_gateway_id = aws_ec2_transit_gateway.this.id
vpc_id = var.accounts[1].vpc_ids[count.index]
subnet_ids = var.accounts[1].vpc_subnets[count.index].subnet_ids
}
推荐阅读
- python - 在相同数量的 bin 中绘制相同数量的点并平均 bin 值
- django - Django Haystack中的date_facet没有按日期分面
- html - VBA 到 VBS - iframe 权限被拒绝
- javascript - 我可以对外部脚本加载的 HTML 进行 dom 操作吗?
- c++ - 如何将不同模板参数值但类型相同的值放入此类型的变量中?C++
- c# - 检查数据库中是否已经存在记录
- docker - docker - 在构建期间将参数传递给脚本
- javascript - 使用 use-scroll-position 滚动后,如何将 className 添加到 React 组件?
- javascript - 如何选择在另一个属性中具有特定值的标记的 XML 属性值?
- javascript - 在three.js中将材料分配给加载的.obj而不带.mtl