A terraform module to provide a VPC in AWS.
name
- name to be used on all the resources created by the modulecidr
- the CIDR block for the VPCinstance_tenancy
- tenancy option for instances launched into the VPCpublic_subnets
- list of public subnet cidrsprivate_subnets
- list of private subnet cidrsdatabase_subnets
- list of private RDS subnet cidrselasticache_subnets
- list of private Elasticache subnet cidrsazs
- list of AZs in which to distribute subnetsenable_dns_hostnames
- should be true if you want to use private DNS within the VPCenable_dns_support
- should be true if you want to use private DNS within the VPCenable_nat_gateway
- should be true if you want to provision NAT Gatewayssingle_nat_gateway
- should be true if you want to provision a single shared NAT Gateway across all of your private networksenable_s3_endpoint
- should be true if you want to provision an S3 endpoint within the VPCenable_dynamodb_endpoint
- should be true if you want to provision a DynamoDB endpoint within the VPCmap_public_ip_on_launch
- should be false if you do not want to auto-assign public IP on launchprivate_propagating_vgws
- list of VGWs the private route table should propagatepublic_propagating_vgws
- list of VGWs the public route table should propagatetags
- dictionary of tags that will be added to resources created by the modulepublic_subnet_tags
- dictionary of tags that will be added to public subnets created by the moduleprivate_subnet_tags
- dictionary of tags that will be added to private subnets created by the moduledatabase_subnet_tags
- dictionary of tags that will be added to database subnets created by the moduleelasticache_subnet_tags
- dictionary of tags that will be added to elasticache subnets created by the module
It's generally preferable to keep public_subnets
, private_subnets
, and
azs
to lists of the same length.
This module optionally creates NAT Gateways (one per availability zone) and sets them as the default gateways for the corresponding private subnets.
module "vpc" {
source = "github.com/terraform-community-modules/tf_aws_vpc"
name = "my-vpc"
cidr = "10.0.0.0/16"
private_subnets = ["10.0.1.0/24", "10.0.2.0/24", "10.0.3.0/24"]
public_subnets = ["10.0.101.0/24", "10.0.102.0/24", "10.0.103.0/24"]
enable_nat_gateway = "true"
azs = ["us-west-2a", "us-west-2b", "us-west-2c"]
tags {
"Terraform" = "true"
"Environment" = "${var.environment}"
}
}
For Terraform version older than 0.7.0 use ref=v1.0.0
:
source = "github.com/terraform-community-modules/tf_aws_vpc?ref=v1.0.0"
vpc_id
- does what it says on the tinprivate_subnets
- list of private subnet idspublic_subnets
- list of public subnet idsdatabase_subnets
- list of database subnets idsdatabase_subnet_group
- db subnet group nameelasticache_subnets
- list of elasticache subnets idselasticache_subnet_group
- elasticache subnet group namepublic_route_table_ids
- list of public route table idsprivate_route_table_ids
- list of private route table idsdefault_security_group_id
- VPC default security group id stringnat_eips
- list of Elastic IP ids (if any are provisioned)nat_eips_public_ips
- list of NAT gateways' public Elastic IP's (if any are provisioned)natgw_ids
- list of NAT gateway idsigw_id
- Internet Gateway id stringdefault_network_acl_id
- VPC default network ACL idvpc_endpoint_s3_id
- VPC Endpoint ID for S3vpc_endpoint_dynamodb_id
- VPC Endpoint ID for Dynamodb
NOTE: previous versions of this module returned a single string as a route table ID, while this version returns a list.
Originally created and maintained by Casey Ransom Hijacked by Paul Hinze
Apache 2 Licensed. See LICENSE for full details.