1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
|
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 Group
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
ingress {
from_port = 0
to_port = 0
protocol = -1
self = true
ipv6_cidr_blocks = ["::/0"]
}
dynamic "ingress" {
for_each = var.security_group_ingress
content {
from_port = lookup(ingress.value, "from_port", null)
to_port = lookup(ingress.value, "to_port", null)
protocol = lookup(ingress.value, "protocol", null)
self = lookup(ingress.value, "self", null)
cidr_blocks = lookup(ingress.value, "cidr_blocks", null)
ipv6_cidr_blocks = lookup(ingress.value, "ipv6_cidr_blocks", null)
}
}
dynamic "egress" {
for_each = var.security_group_egress
content {
from_port = lookup(egress.value, "from_port", null)
to_port = lookup(egress.value, "to_port", null)
protocol = lookup(egress.value, "protocol", null)
self = lookup(egress.value, "self", null)
cidr_blocks = lookup(egress.value, "cidr_blocks", null)
ipv6_cidr_blocks = lookup(egress.value, "ipv6_cidr_blocks", null)
}
}
}
# Create Internet Gateway
resource "aws_internet_gateway" "internet_gateway" {
depends_on = [
aws_vpc.vpc
]
tags = local.tags
vpc_id = aws_vpc.vpc.id
}
# Create Route
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 Subnet
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
}
|