1
1
# ########################### VPC ############################
2
2
3
3
# Create VPC, subnets, route tables, and IGW
4
- data "aws_availability_zones" "available" {
5
- state = " available"
6
- }
7
-
8
- locals {
9
- valid_azs = [for az in data . aws_availability_zones . available . names : az if az != " us-west-1a" ]
10
- }
11
-
12
4
module "vpc" {
13
5
source = " terraform-aws-modules/vpc/aws"
14
6
version = " >= 4.0"
15
7
name = " ${ var . project_prefix } -vpc-${ random_id . build_suffix . hex } "
16
8
cidr = var. cidr
17
- azs = local . valid_azs
18
- enable_dns_support = true
9
+ azs = var . azs
10
+ enable_dns_support = true
19
11
enable_dns_hostnames = true
20
12
tags = {
21
13
resource_owner = var.resource_owner
@@ -31,43 +23,71 @@ resource "aws_internet_gateway" "igw" {
31
23
}
32
24
33
25
module subnet_addrs {
34
- for_each = toset (local . valid_azs )
26
+ for_each = toset (var . azs )
35
27
source = " hashicorp/subnets/cidr"
36
28
version = " >= 1.0.0"
37
- base_cidr_block = cidrsubnet (module. vpc . vpc_cidr_block ,4 ,index (local. valid_azs ,each. key ))
29
+ base_cidr_block = cidrsubnet (module. vpc . vpc_cidr_block ,4 ,index (var. azs ,each. key ))
30
+ /*
31
+ VPC CIDR = 10.0.0.0/16
32
+ AZ1 = 10.0.0.0/20
33
+ AZ2 = 10.0.16.0/20
34
+ */
38
35
networks = [
39
- { name = " management" , new_bits = 8 },
40
- { name = " internal" , new_bits = 6 },
41
- { name = " external" , new_bits = 6 },
42
- { name = " app-cidr" , new_bits = 4 }
36
+ {
37
+ name = " management"
38
+ new_bits = 8
39
+ # 10.0.0.0/28
40
+ # 10.0.16.0/28
41
+ },
42
+ {
43
+ name = " internal"
44
+ new_bits = 6
45
+ # 10.0.0.64/26
46
+ # 10.0.16.64/26
47
+ },
48
+ {
49
+ name = " external"
50
+ new_bits = 6
51
+ # 10.0.0.128/26
52
+ # 10.0.16.128/26
53
+ },
54
+ {
55
+ name = " app-cidr"
56
+ new_bits = 4
57
+ # 10.0.1.0/24 EC2
58
+ # 10.0.17.0/24 EKS
59
+ }
43
60
]
44
61
}
45
62
46
63
resource "aws_subnet" "internal" {
47
- for_each = toset (local . valid_azs )
48
- vpc_id = module. vpc . vpc_id
49
- cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" internal" ]
64
+ for_each = toset (var . azs )
65
+ vpc_id = module. vpc . vpc_id
66
+ cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" internal" ]
50
67
availability_zone = each. key
51
- tags = { Name = format (" %s-int-subnet-%s" , var. project_prefix , each. key ) }
68
+ tags = {
69
+ Name = format (" %s-int-subnet-%s" ,var. project_prefix ,each. key )
70
+ }
52
71
}
53
-
54
72
resource "aws_subnet" "management" {
55
- for_each = toset (local . valid_azs )
56
- vpc_id = module. vpc . vpc_id
57
- cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" management" ]
73
+ for_each = toset (var . azs )
74
+ vpc_id = module. vpc . vpc_id
75
+ cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" management" ]
58
76
availability_zone = each. key
59
- tags = { Name = format (" %s-mgmt-subnet-%s" , var. project_prefix , each. key ) }
77
+ tags = {
78
+ Name = format (" %s-mgmt-subnet-%s" ,var. project_prefix ,each. key )
79
+ }
60
80
}
61
-
62
81
resource "aws_subnet" "external" {
63
- for_each = toset (local . valid_azs )
64
- vpc_id = module. vpc . vpc_id
65
- cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" external" ]
82
+ for_each = toset (var . azs )
83
+ vpc_id = module. vpc . vpc_id
84
+ cidr_block = module. subnet_addrs [each . key ]. network_cidr_blocks [" external" ]
66
85
map_public_ip_on_launch = true
67
86
availability_zone = each. key
68
- tags = { Name = format (" %s-ext-subnet-%s" , var. project_prefix , each. key ) }
87
+ tags = {
88
+ Name = format (" %s-ext-subnet-%s" ,var. project_prefix ,each. key )
89
+ }
69
90
}
70
-
71
91
resource "aws_route_table" "main" {
72
92
vpc_id = module. vpc . vpc_id
73
93
route {
@@ -78,22 +98,18 @@ resource "aws_route_table" "main" {
78
98
Name = " ${ var . project_prefix } -rt-${ random_id . build_suffix . hex } "
79
99
}
80
100
}
81
-
82
101
resource "aws_route_table_association" "subnet-association-internal" {
83
- for_each = toset (local . valid_azs )
102
+ for_each = toset (var . azs )
84
103
subnet_id = aws_subnet. internal [each . key ]. id
85
104
route_table_id = aws_route_table. main . id
86
105
}
87
-
88
106
resource "aws_route_table_association" "subnet-association-management" {
89
- for_each = toset (local . valid_azs )
107
+ for_each = toset (var . azs )
90
108
subnet_id = aws_subnet. management [each . key ]. id
91
109
route_table_id = aws_route_table. main . id
92
110
}
93
-
94
111
resource "aws_route_table_association" "subnet-association-external" {
95
- for_each = toset (local . valid_azs )
112
+ for_each = toset (var . azs )
96
113
subnet_id = aws_subnet. external [each . key ]. id
97
114
route_table_id = aws_route_table. main . id
98
115
}
99
-
0 commit comments