@@ -18,81 +18,9 @@ locals {
18
18
}
19
19
20
20
# ###############################################################################
21
- # Supporting Resources
21
+ # EC2 Module
22
22
# ###############################################################################
23
23
24
- module "vpc" {
25
- source = " terraform-aws-modules/vpc/aws"
26
- version = " ~> 3.0"
27
-
28
- name = local. name
29
- cidr = " 10.99.0.0/18"
30
-
31
- azs = [" ${ local . region } a" , " ${ local . region } b" , " ${ local . region } c" ]
32
- public_subnets = [" 10.99.0.0/24" , " 10.99.1.0/24" , " 10.99.2.0/24" ]
33
- private_subnets = [" 10.99.3.0/24" , " 10.99.4.0/24" , " 10.99.5.0/24" ]
34
- database_subnets = [" 10.99.7.0/24" , " 10.99.8.0/24" , " 10.99.9.0/24" ]
35
-
36
- tags = local. tags
37
- }
38
-
39
- data "aws_ami" "amazon_linux" {
40
- most_recent = true
41
- owners = [" amazon" ]
42
-
43
- filter {
44
- name = " name"
45
- values = [" amzn-ami-hvm-*-x86_64-gp2" ]
46
- }
47
- }
48
-
49
- module "security_group" {
50
- source = " terraform-aws-modules/security-group/aws"
51
- version = " ~> 4.0"
52
-
53
- name = local. name
54
- description = " Security group for example usage with EC2 instance"
55
- vpc_id = module. vpc . vpc_id
56
-
57
- ingress_cidr_blocks = [" 0.0.0.0/0" ]
58
- ingress_rules = [" http-80-tcp" , " all-icmp" ]
59
- egress_rules = [" all-all" ]
60
-
61
- tags = local. tags
62
- }
63
-
64
- resource "aws_placement_group" "web" {
65
- name = local. name
66
- strategy = " cluster"
67
- }
68
-
69
- resource "aws_kms_key" "this" {
70
- }
71
-
72
- resource "aws_network_interface" "this" {
73
- subnet_id = element (module. vpc . private_subnets , 0 )
74
- }
75
-
76
- resource "aws_ec2_capacity_reservation" "open" {
77
- instance_type = " t3.micro"
78
- instance_platform = " Linux/UNIX"
79
- availability_zone = " ${ local . region } a"
80
- instance_count = 1
81
- instance_match_criteria = " open"
82
- }
83
-
84
- resource "aws_ec2_capacity_reservation" "targeted" {
85
- instance_type = " t3.micro"
86
- instance_platform = " Linux/UNIX"
87
- availability_zone = " ${ local . region } a"
88
- instance_count = 1
89
- instance_match_criteria = " targeted"
90
- }
91
-
92
- # # ################################################################################
93
- # # # EC2 Module
94
- # # ################################################################################
95
-
96
24
module "ec2_disabled" {
97
25
source = " ../../"
98
26
@@ -123,10 +51,6 @@ module "ec2_complete" {
123
51
cpu_core_count = 2 # default 4
124
52
cpu_threads_per_core = 1 # default 2
125
53
126
- capacity_reservation_specification = {
127
- capacity_reservation_preference = " open"
128
- }
129
-
130
54
enable_volume_tags = false
131
55
root_block_device = [
132
56
{
@@ -295,15 +219,13 @@ module "ec2_spot_instance" {
295
219
create_spot_instance = true
296
220
297
221
ami = data. aws_ami . amazon_linux . id
298
- instance_type = " c4.4xlarge"
299
222
availability_zone = element (module. vpc . azs , 0 )
300
223
subnet_id = element (module. vpc . private_subnets , 0 )
301
224
vpc_security_group_ids = [module . security_group . security_group_id ]
302
- placement_group = aws_placement_group. web . id
303
225
associate_public_ip_address = true
304
226
305
227
# Spot request specific attributes
306
- spot_price = " 0.60 "
228
+ spot_price = " 0.1 "
307
229
spot_wait_for_fulfillment = true
308
230
spot_type = " persistent"
309
231
spot_instance_interruption_behavior = " terminate"
@@ -314,9 +236,6 @@ module "ec2_spot_instance" {
314
236
cpu_core_count = 2 # default 4
315
237
cpu_threads_per_core = 1 # default 2
316
238
317
- capacity_reservation_specification = {
318
- capacity_reservation_preference = " open"
319
- }
320
239
321
240
enable_volume_tags = false
322
241
root_block_device = [
@@ -388,3 +307,75 @@ module "ec2_targeted_capacity_reservation" {
388
307
389
308
tags = local. tags
390
309
}
310
+
311
+ # ###############################################################################
312
+ # Supporting Resources
313
+ # ###############################################################################
314
+
315
+ module "vpc" {
316
+ source = " terraform-aws-modules/vpc/aws"
317
+ version = " ~> 3.0"
318
+
319
+ name = local. name
320
+ cidr = " 10.99.0.0/18"
321
+
322
+ azs = [" ${ local . region } a" , " ${ local . region } b" , " ${ local . region } c" ]
323
+ public_subnets = [" 10.99.0.0/24" , " 10.99.1.0/24" , " 10.99.2.0/24" ]
324
+ private_subnets = [" 10.99.3.0/24" , " 10.99.4.0/24" , " 10.99.5.0/24" ]
325
+ database_subnets = [" 10.99.7.0/24" , " 10.99.8.0/24" , " 10.99.9.0/24" ]
326
+
327
+ tags = local. tags
328
+ }
329
+
330
+ data "aws_ami" "amazon_linux" {
331
+ most_recent = true
332
+ owners = [" amazon" ]
333
+
334
+ filter {
335
+ name = " name"
336
+ values = [" amzn-ami-hvm-*-x86_64-gp2" ]
337
+ }
338
+ }
339
+
340
+ module "security_group" {
341
+ source = " terraform-aws-modules/security-group/aws"
342
+ version = " ~> 4.0"
343
+
344
+ name = local. name
345
+ description = " Security group for example usage with EC2 instance"
346
+ vpc_id = module. vpc . vpc_id
347
+
348
+ ingress_cidr_blocks = [" 0.0.0.0/0" ]
349
+ ingress_rules = [" http-80-tcp" , " all-icmp" ]
350
+ egress_rules = [" all-all" ]
351
+
352
+ tags = local. tags
353
+ }
354
+
355
+ resource "aws_placement_group" "web" {
356
+ name = local. name
357
+ strategy = " cluster"
358
+ }
359
+
360
+ resource "aws_kms_key" "this" {
361
+ }
362
+
363
+ resource "aws_network_interface" "this" {
364
+ subnet_id = element (module. vpc . private_subnets , 0 )
365
+ }
366
+
367
+ resource "aws_ec2_capacity_reservation" "open" {
368
+ instance_type = " t3.micro"
369
+ instance_platform = " Linux/UNIX"
370
+ availability_zone = " ${ local . region } a"
371
+ instance_count = 1
372
+ instance_match_criteria = " open"
373
+ }
374
+
375
+ resource "aws_ec2_capacity_reservation" "targeted" {
376
+ instance_type = " t3.micro"
377
+ instance_platform = " Linux/UNIX"
378
+ availability_zone = " ${ local . region } a"
379
+ instance_count = 1
380
+ instance_match_criteria = " targeted"
381
+ }
0 commit comments