refactor(terraform): 2n_aws_c5n
[csit.git] / fdio.infra.terraform / terraform-aws-vpc / main.tf
1 locals {
2   tags = {
3     "Name"        = "${var.tags_name}"
4     "Environment" = "${var.tags_environment}"
5   }
6 }
7
8 # Create VPC
9 resource "aws_vpc" "vpc" {
10   assign_generated_ipv6_cidr_block = var.vpc_assign_generated_ipv6_cidr_block
11   cidr_block                       = var.vpc_cidr_block
12   enable_dns_hostnames             = var.vpc_enable_dns_hostnames
13   enable_dns_support               = var.vpc_enable_dns_support
14   instance_tenancy                 = var.vpc_instance_tenancy
15   tags                             = local.tags
16 }
17
18 # Create Security Group
19 resource "aws_security_group" "security_group" {
20   depends_on = [
21     aws_vpc.vpc
22   ]
23   description            = var.security_group_description
24   name                   = var.security_group_name
25   revoke_rules_on_delete = var.security_group_revoke_rules_on_delete
26   tags                   = local.tags
27   vpc_id                 = aws_vpc.vpc.id
28
29   dynamic "ingress" {
30     for_each = var.security_group_ingress
31     content {
32       from_port        = lookup(ingress.value, "from_port", null)
33       to_port          = lookup(ingress.value, "to_port", null)
34       protocol         = lookup(ingress.value, "protocol", null)
35       self             = lookup(ingress.value, "self", null)
36       cidr_blocks      = lookup(ingress.value, "cidr_blocks", null)
37       ipv6_cidr_blocks = lookup(ingress.value, "ipv6_cidr_blocks", null)
38     }
39   }
40   dynamic "egress" {
41     for_each = var.security_group_egress
42     content {
43       from_port        = lookup(egress.value, "from_port", null)
44       to_port          = lookup(egress.value, "to_port", null)
45       protocol         = lookup(egress.value, "protocol", null)
46       self             = lookup(egress.value, "self", null)
47       cidr_blocks      = lookup(egress.value, "cidr_blocks", null)
48       ipv6_cidr_blocks = lookup(egress.value, "ipv6_cidr_blocks", null)
49     }
50   }
51 }
52
53 # Create Internet Gateway
54 resource "aws_internet_gateway" "internet_gateway" {
55   depends_on = [
56     aws_vpc.vpc
57   ]
58   tags   = local.tags
59   vpc_id = aws_vpc.vpc.id
60 }
61
62 # Create Route
63 resource "aws_route" "route" {
64   depends_on = [
65     aws_vpc.vpc,
66     aws_internet_gateway.internet_gateway
67   ]
68   destination_cidr_block = "0.0.0.0/0"
69   gateway_id             = aws_internet_gateway.internet_gateway.id
70   route_table_id         = aws_vpc.vpc.main_route_table_id
71 }
72
73 # Create Subnet
74 resource "aws_subnet" "subnet" {
75   depends_on = [
76     aws_vpc.vpc
77   ]
78   assign_ipv6_address_on_creation = var.subnet_assign_ipv6_address_on_creation
79   availability_zone               = var.subnet_availability_zone
80   cidr_block                      = aws_vpc.vpc.cidr_block
81   ipv6_cidr_block                 = cidrsubnet(aws_vpc.vpc.ipv6_cidr_block, 8, 1)
82   map_public_ip_on_launch         = var.subnet_map_public_ip_on_launch
83   tags                            = local.tags
84   vpc_id                          = aws_vpc.vpc.id
85 }