【问题标题】:Terraform how to get dynamic route in route tableTerraform如何在路由表中获取动态路由
【发布时间】:2021-01-27 18:33:03
【问题描述】:

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)
}

开发

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)
}

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

【问题讨论】:

    标签: amazon-web-services terraform


    【解决方案1】:

    您可以为此使用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 时,不会创建第二个route

    【讨论】:

    • 非常感谢@marcin。我正在实施,所以让我知道结果
    猜你喜欢
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 2021-03-16
    • 1970-01-01
    • 2020-01-10
    • 2016-11-25
    • 2021-08-29
    • 1970-01-01
    相关资源
    最近更新 更多