Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/eternaltyro/terraform-aws-vpc
(Mirror) Creates an AWS VPC with all the bells and whistles
https://github.com/eternaltyro/terraform-aws-vpc
aws aws-vpc terraform terraform-module
Last synced: about 2 months ago
JSON representation
(Mirror) Creates an AWS VPC with all the bells and whistles
- Host: GitHub
- URL: https://github.com/eternaltyro/terraform-aws-vpc
- Owner: eternaltyro
- License: lgpl-2.1
- Created: 2023-06-28T17:03:29.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-08-13T08:46:23.000Z (5 months ago)
- Last Synced: 2024-08-13T10:26:07.916Z (5 months ago)
- Topics: aws, aws-vpc, terraform, terraform-module
- Language: HCL
- Homepage: https://gitlab.com/eternaltyro/terraform-aws-vpc
- Size: 58.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: COPYING
Awesome Lists containing this project
README
# Terraform AWS VPC Module
This is a terraform module that brings up a full AWS VPC with all the bells and whistles
This module helps deploy the following AWS resources
1. A primary VPC - the star of the show - with a modified RFC1918 IP space [^ref1] in compliance with AWS restrictions
2. An Internet gatway associated with the VPC
3. A NAT gateway for IPv4 and IPv6 egress traffic
4. An egress-only internet gateway for outgoing IPv6 traffic
5. A Public and a Private subnet with associated route tables containing appropriate routes
6. Prefix lists to maintain admin IP addresses to use in Security Group whitelistsPlanned to be implemented:
- [TODO] VPC Endpoints for S3 and other services
## How to use
:warning: Please note that this module compatible with AWS provider version >= 5.0.0. Tested with v5.1.0;
1. Import the module in your root module:
```
module "vpc" {
source = "git::https://gitlab.com/eternaltyro/terraform-aws-vpc.git"...
key = var.value
}
```If you wish to use SSH to connect to git, then something like this will help:
```
module "vpc" {
source = "git::ssh://[email protected]/eternaltyro/terraform-aws-vpc.git"
}
```2. Write a provider block with the official AWS provider:
```
terraform {
required_version = ">= 1.4.0"requried_providers {
aws = {
source = "hashicorp/aws"
version = "~> 5.1.0"
}
}
}provider "aws" {
region = lookup(var.aws_region)default_tags {
tags = var.resource_tags
}
}
```3. Initialise the backend, and plan
```
$ terraform init
$ terraform plan
```## Inputs
1. `vpc_name` (string) - Name of the VPC; defaults to empty string.
2. `enable_ipv6` (bool) - IPv6 for the VPC; defaults to `true`
3. `public_subnet_auto_assign_public_ipv4` - defaults to `false`
4. `public_subnet_enable_ipv6` - defaults to `false`
5. `public_subnet_enable_ipv6_only` - Make public subnet IPv6-native; defaults to `false`
6. `public_subnet_auto_assign_ipv6` - Auto-assign IPv6 to ENI; defaults to `true`
7. `public_subnet_enable_dns64` - defaults to `true`
8. :warning: - prepend all the above with `private_subnet...` for Private subnet settingsIPv6 settings are logical AND'ed so that ipv6 settings are sane. For example when you set `enable_ipv6` to false other ipv6 settings do not take effect.
## Outputs
1. `vpc_id` - VPC ID
2. `public_subnets` - A list of public subnet IDs
3. `private_subnets` - A list of private subnet IDs
4. `ipv6-only_subnets` - A list of private subnet IDs
5. `ipv4_prefix_list_id` - ID of the prefix list for IPv4 addresses
6. `ipv6_prefix_list_id` - ID of the prefix list for IPv6 addresses
7. `default_security_group_id` - ID of the default VPC security group## Variables
- `aws_rfc1918` - A list of AWS restricted CIDRs that can be used for VPC address spacing. Defaults are set.
- `default_tags` - A map of tag keys and values with basic keys and empty values by default## References
[ref1]: AWS Documentation VPC CIDR blocks - https://docs.aws.amazon.com/vpc/latest/userguide/vpc-cidr-blocks.html
## Copyright and License texts
The project is licensed under GNU LGPL. Please make any modifications to this module public. Read LICENSE, COPYING.LESSER, and COPYING files for license text
Copyright (C) 2023 eternaltyro
This file is part of Terraform AWS VPC Module aka terraform-aws-vpc projectterraform-aws-vpc is free software: you can redistribute it and/or modify
it under the terms of the GNU Lesser General Public License as published by
the Free Software Foundation, either version 3 of the License.terraform-aws-vpc is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.License text can be found in the repository