@@ -18,81 +18,9 @@ locals {
1818}
1919
2020# ###############################################################################
21- # Supporting Resources
21+ # EC2 Module
2222# ###############################################################################
2323
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-
9624module "ec2_disabled" {
9725 source = " ../../"
9826
@@ -123,10 +51,6 @@ module "ec2_complete" {
12351 cpu_core_count = 2 # default 4
12452 cpu_threads_per_core = 1 # default 2
12553
126- capacity_reservation_specification = {
127- capacity_reservation_preference = " open"
128- }
129-
13054 enable_volume_tags = false
13155 root_block_device = [
13256 {
@@ -295,15 +219,13 @@ module "ec2_spot_instance" {
295219 create_spot_instance = true
296220
297221 ami = data. aws_ami . amazon_linux . id
298- instance_type = " c4.4xlarge"
299222 availability_zone = element (module. vpc . azs , 0 )
300223 subnet_id = element (module. vpc . private_subnets , 0 )
301224 vpc_security_group_ids = [module . security_group . security_group_id ]
302- placement_group = aws_placement_group. web . id
303225 associate_public_ip_address = true
304226
305227 # Spot request specific attributes
306- spot_price = " 0.60 "
228+ spot_price = " 0.1 "
307229 spot_wait_for_fulfillment = true
308230 spot_type = " persistent"
309231 spot_instance_interruption_behavior = " terminate"
@@ -314,9 +236,6 @@ module "ec2_spot_instance" {
314236 cpu_core_count = 2 # default 4
315237 cpu_threads_per_core = 1 # default 2
316238
317- capacity_reservation_specification = {
318- capacity_reservation_preference = " open"
319- }
320239
321240 enable_volume_tags = false
322241 root_block_device = [
@@ -388,3 +307,75 @@ module "ec2_targeted_capacity_reservation" {
388307
389308 tags = local. tags
390309}
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