amazon-web-services - Terraform如何在路由表中获取动态路由

标签 amazon-web-services terraform

Terraform如何根据工作空间在路由表中获取动态路由

UAT

resource "aws_vpn_gateway" "micorsoft_vpn_gw" { 
  vpc_id = aws_vpc.default.id

  tags = {
    Name = "micorsoft"
  }
}

resource "aws_route_table" "private" { 
  vpc_id = aws_vpc.default.id
  route {
    cidr_block     = "0.0.0.0/0"
    nat_gateway_id = aws_nat_gateway.default.id
  }
  
  route {
    cidr_block     = "0.0.0.0/0"
    gateway_id     =  aws_vpn_gateway.micorsoft_vpn_gw.id
  }

  tags = merge(map("Name", "${var.namespace}-${var.environment}"), var.tags)
}

DEV

resource "aws_route_table" "private" { 
  vpc_id = aws_vpc.default.id
  route {
    cidr_block     = "0.0.0.0/0"
    nat_gateway_id = aws_nat_gateway.default.id
  }
 
  tags = merge(map("Name", "${var.namespace}-${var.environment}"), var.tags)
}

如何实现这一点是基于工作空间/环境的动态方式

最佳答案

您可以使用dynamic block为此。

resource "aws_route_table" "private" { 
  vpc_id = aws_vpc.default.id

  route {
    cidr_block     = "0.0.0.0/0"
    nat_gateway_id = aws_nat_gateway.default.id
  }
  
  dynamic "route" {
      for_each = var.env == "DEV" ? toset([]) : toset([1])
      content {
        cidr_block     = "0.0.0.0/0"
        gateway_id     =  aws_vpn_gateway.micorsoft_vpn_gw.id
      }      
  }

  tags = merge(map("Name", "${var.namespace}-${var.environment}"), var.tags)
}

基本上,当 var.envDEV 时,不会创建第二个路由

关于amazon-web-services - Terraform如何在路由表中获取动态路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64334897/

相关文章:

amazon-web-services - 从 AWS S3 list 报告中排除对象

amazon-web-services - 是什么导致我的 SAM 模板生成这么多错误

mysql - 如何在 iOS 中连接亚马逊 RDS

azure - 通过 terraform 脚本检查 azure-resourcegroup 是否已存在

terraform aws_elasticsearch_domain - 如果 zone_awareness_enabled 为 false - 为什么要考虑而不是忽略 zone_awareness_config?

node.js - DynamoDB 扫描显示的项目少于 DynamoDB 控制台

linux - 以下架构的 Web 服务器要求

azure - 使用私有(private)存储帐户创建 SQL Server 漏洞评估资源失败

azure - Terraform Azure Key Vault Secret 不依赖于 access_policy

azure - 将 Terraform 摘要添加为来自 Azure DevOps 的 Github PR 评论