aboutsummaryrefslogtreecommitdiffstats
path: root/fdio.infra.terraform/terraform-aws-vpc/main.tf
diff options
context:
space:
mode:
authorPeter Mikus <pmikus@cisco.com>2022-03-24 10:48:15 +0100
committerPeter Mikus <pmikus@cisco.com>2022-03-24 10:05:05 +0000
commitc5181ae1627fed20b79a829bf2330f3ee9d8a0f6 (patch)
tree606c7a53441e65f40cc16631b0495eb6c7129efa /fdio.infra.terraform/terraform-aws-vpc/main.tf
parentdc28d6ba2adc598699a71fc5757f08325840d358 (diff)
feat(terraform): AWS VPC
Signed-off-by: Peter Mikus <pmikus@cisco.com> Change-Id: I3acd41dc07c15eac0e87a4aedd75d53b30666cf8
Diffstat (limited to 'fdio.infra.terraform/terraform-aws-vpc/main.tf')
-rw-r--r--fdio.infra.terraform/terraform-aws-vpc/main.tf83
1 files changed, 83 insertions, 0 deletions
diff --git a/fdio.infra.terraform/terraform-aws-vpc/main.tf b/fdio.infra.terraform/terraform-aws-vpc/main.tf
new file mode 100644
index 0000000000..ed2e8715e7
--- /dev/null
+++ b/fdio.infra.terraform/terraform-aws-vpc/main.tf
@@ -0,0 +1,83 @@
+locals {
+ tags = {
+ "Name" = "${var.tags_name}"
+ "Environment" = "${var.tags_environment}"
+ }
+}
+
+# Create VPC
+resource "aws_vpc" "vpc" {
+ assign_generated_ipv6_cidr_block = var.vpc_assign_generated_ipv6_cidr_block
+ cidr_block = var.vpc_cidr_block
+ enable_dns_hostnames = var.vpc_enable_dns_hostnames
+ enable_dns_support = var.vpc_enable_dns_support
+ instance_tenancy = var.vpc_instance_tenancy
+ tags = local.tags
+}
+
+# Create Security Groups
+resource "aws_security_group" "security_group" {
+ depends_on = [
+ aws_vpc.vpc
+ ]
+ description = var.security_group_description
+ name = var.security_group_name
+ revoke_rules_on_delete = var.security_group_revoke_rules_on_delete
+ tags = local.tags
+ vpc_id = aws_vpc.vpc.id
+
+ dynamic "ingress" {
+ for_each = var.security_group_ingress
+ content {
+ from_port = ingress.value["from_port"]
+ to_port = ingress.value["to_port"]
+ protocol = ingress.value["protocol"]
+ cidr_blocks = ingress.value["cidr_blocks"]
+ ipv6_cidr_blocks = ingress.value["ipv6_cidr_blocks"]
+ }
+ }
+ dynamic "egress" {
+ for_each = var.security_group_egress
+ content {
+ from_port = ingress.value["from_port"]
+ to_port = ingress.value["to_port"]
+ protocol = ingress.value["protocol"]
+ cidr_blocks = ingress.value["cidr_blocks"]
+ ipv6_cidr_blocks = ingress.value["ipv6_cidr_blocks"]
+ }
+ }
+}
+
+# Create Gateway
+resource "aws_internet_gateway" "internet_gateway" {
+ depends_on = [
+ aws_vpc.vpc
+ ]
+ tags = local.tags
+ vpc_id = aws_vpc.vpc.id
+}
+
+# Create Routes
+resource "aws_route" "route" {
+ depends_on = [
+ aws_vpc.vpc,
+ aws_internet_gateway.internet_gateway
+ ]
+ destination_cidr_block = "0.0.0.0/0"
+ gateway_id = aws_internet_gateway.internet_gateway.id
+ route_table_id = aws_vpc.vpc.main_route_table_id
+}
+
+# Create Subnets
+resource "aws_subnet" "subnet" {
+ depends_on = [
+ aws_vpc.vpc
+ ]
+ assign_ipv6_address_on_creation = var.subnet_assign_ipv6_address_on_creation
+ availability_zone = var.subnet_availability_zone
+ cidr_block = aws_vpc.vpc.cidr_block
+ ipv6_cidr_block = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 1)
+ map_public_ip_on_launch = var.subnet_map_public_ip_on_launch
+ tags = local.tags
+ vpc_id = aws_vpc.vpc.id
+}