如何通过Terraform AWS VPC模块将公有子网关联至默认路由表
关于Terraform AWS VPC模块路由表配置的问题解答
问题1:能否通过该模块将自动创建的公网路由表设为VPC主路由表?
可以。该模块提供了public_route_table_default参数,将其设为true后,模块会自动把创建的公网路由表设置为VPC的主路由表,无需额外配置默认路由表关联逻辑。
修改后的模块配置片段:
module "vpc" { source = "terraform-aws-modules/vpc/aws" name = "${local.app_name}-vpc" cidr = local.vpc_cidr enable_dns_hostnames = true map_public_ip_on_launch = true azs = local.azs public_subnets = [for key, value in local.azs : cidrsubnet(local.vpc_cidr, 8, key + 100)] # 开启将公网路由表设为主路由表 public_route_table_default = true manage_default_security_group = false manage_default_network_acl = false }
问题2:如果选择使用默认路由表,能否让模块将子网关联到默认路由表并添加指向IGW的路由?
可以。通过开启manage_default_route_table = true,并正确配置default_route_table_routes添加默认路由即可。注意不要直接引用module.vpc.igw_id(会触发循环依赖),而是使用模块支持的type = "igw",让模块自动关联已创建的互联网网关。
修改后的配置片段:
module "vpc" { source = "terraform-aws-modules/vpc/aws" name = "${local.app_name}-vpc" cidr = local.vpc_cidr enable_dns_hostnames = true map_public_ip_on_launch = true azs = local.azs public_subnets = [for key, value in local.azs : cidrsubnet(local.vpc_cidr, 8, key + 100)] manage_default_route_table = true # 配置默认路由表的IGW路由,使用type = "igw"避免循环依赖 default_route_table_routes = [ { cidr_block = "0.0.0.0/0" type = "igw" } ] manage_default_security_group = false manage_default_network_acl = false }
配置完成后,模块会自动将公子网关联到默认路由表,并添加指向IGW的0.0.0.0/0路由,此时默认路由表会作为VPC的主路由表。
内容的提问来源于stack exchange,提问作者aalok89
相关产品推荐
相关产品推荐

