Условно запускать модули 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  
}

1 ответ

Я пытался установить условие 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
}
Другие вопросы по тегам