Skip to content

Commit 6ad81a2

Browse files
committed
fix: Updated the object-based configuration in variable.tf
1 parent e585a0f commit 6ad81a2

File tree

6 files changed

+171
-218
lines changed

6 files changed

+171
-218
lines changed

.gitignore

Lines changed: 16 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,24 @@
1-
# ignored files
1+
# Terraform state files - Contains sensitive infrastructure state information
22
*.tfstate
33
*.tfstate.backup
4+
5+
# Local Terraform directory - Contains downloaded providers and modules
46
.terraform
7+
8+
# IDE settings directory for IntelliJ
59
.idea
10+
11+
# IntelliJ project files
612
*.iml
13+
14+
# Go dependency file
715
go.sum
16+
17+
# Terraform lock file - Contains provider version constraints
818
*.terraform.lock.hcl
19+
20+
# Terraform crash log file - Generated during crashes
921
crash.log
22+
23+
# Variable definitions files - May contain sensitive values
24+
*.tfvars

examples/basic/example.tf

Lines changed: 14 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,19 @@ module "ec2" {
1616

1717
#instance
1818
instance_count = 1
19-
ami = "ami-08d658f84a6d84a80"
20-
instance_type = "c4.xlarge"
19+
instance_configuration = {
20+
ami = "ami-08d658f84a6d84a80"
21+
instance_type = "c4.xlarge"
22+
23+
#Root Volume
24+
root_block_device = [
25+
{
26+
volume_type = "gp2"
27+
volume_size = 15
28+
delete_on_termination = true
29+
}
30+
]
31+
}
2132

2233
#Networking
2334
subnet_ids = ["subnet-xxxxxxxx"]
@@ -28,14 +39,7 @@ module "ec2" {
2839
#IAM
2940
iam_instance_profile = "iam-profile-xxxxxxxxx"
3041

31-
#Root Volume
32-
root_block_device = [
33-
{
34-
volume_type = "gp2"
35-
volume_size = 15
36-
delete_on_termination = true
37-
}
38-
]
42+
3943
#Tags
4044
instance_tags = { "snapshot" = true }
4145

examples/complete/example.tf

Lines changed: 17 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -91,8 +91,21 @@ module "ec2" {
9191
ssh_allowed_ports = [22]
9292
#Instance
9393
instance_count = 1
94-
ami = "ami-0f8e81a3da6e2510a"
95-
instance_type = "t2.nano"
94+
instance_configuration = {
95+
ami = "ami-0f8e81a3da6e2510a"
96+
instance_type = "t2.nano"
97+
98+
#Root Volume
99+
root_block_device = [
100+
{
101+
volume_type = "gp2"
102+
volume_size = 15
103+
delete_on_termination = true
104+
}
105+
]
106+
#Mount EBS With User Data
107+
user_data = file("user-data.sh")
108+
}
96109

97110
#Keypair
98111
public_key = ""
@@ -103,14 +116,7 @@ module "ec2" {
103116
#IAM
104117
iam_instance_profile = module.iam-role.name
105118

106-
#Root Volume
107-
root_block_device = [
108-
{
109-
volume_type = "gp2"
110-
volume_size = 15
111-
delete_on_termination = true
112-
}
113-
]
119+
114120

115121
#EBS Volume
116122
ebs_volume_enabled = true
@@ -120,6 +126,5 @@ module "ec2" {
120126
#Tags
121127
instance_tags = { "snapshot" = true }
122128

123-
#Mount EBS With User Data
124-
user_data = file("user-data.sh")
129+
125130
}

examples/spot_instance/example.tf

Lines changed: 17 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -17,13 +17,23 @@ module "spot-ec2" {
1717
public_key = ""
1818

1919
# Spot-instance
20-
spot_price = "0.3"
21-
spot_wait_for_fulfillment = true
22-
spot_type = "persistent"
23-
spot_instance_interruption_behavior = "terminate"
24-
spot_instance_enabled = true
25-
spot_instance_count = 1
26-
instance_type = "c4.xlarge"
20+
spot_configuration = {
21+
spot_price = "0.3"
22+
wait_for_fulfillment = true
23+
spot_type = "persistent"
24+
instance_interruption_behavior = "terminate"
25+
spot_instance_enabled = true
26+
spot_instance_count = 1
27+
instance_type = "c4.xlarge"
28+
29+
root_block_device = [
30+
{
31+
volume_type = "gp2"
32+
volume_size = 15
33+
delete_on_termination = true
34+
}
35+
]
36+
}
2737

2838
#Networking
2939
subnet_ids = ["subnet-xxxxxxxx"]
@@ -32,13 +42,6 @@ module "spot-ec2" {
3242
iam_instance_profile = "iam-profile-xxxxxxxxx"
3343

3444
#Root Volume
35-
root_block_device = [
36-
{
37-
volume_type = "gp2"
38-
volume_size = 15
39-
delete_on_termination = true
40-
}
41-
]
4245

4346
#EBS Volume
4447
ebs_volume_enabled = true

main.tf

Lines changed: 62 additions & 59 deletions
Original file line numberDiff line numberDiff line change
@@ -148,33 +148,34 @@ data "aws_iam_policy_document" "kms" {
148148
#tfsec:ignore:aws-ec2-enforce-http-token-imds
149149
resource "aws_instance" "default" {
150150
count = var.enable && var.default_instance_enabled ? var.instance_count : 0
151-
ami = var.ami == "" ? data.aws_ami.ubuntu.id : var.ami
152-
ebs_optimized = var.ebs_optimized
153-
instance_type = var.instance_type
151+
ami = var.instance_configuration.ami == "" ? data.aws_ami.ubuntu.id : var.instance_configuration.ami
152+
ebs_optimized = var.instance_configuration.ebs_optimized
153+
instance_type = var.instance_configuration.instance_type
154154
key_name = var.key_name == "" ? join("", aws_key_pair.default[*].key_name) : var.key_name
155-
monitoring = var.monitoring
155+
monitoring = var.instance_configuration.monitoring
156156
vpc_security_group_ids = length(var.sg_ids) < 1 ? aws_security_group.default[*].id : var.sg_ids
157157
subnet_id = element(distinct(compact(concat(var.subnet_ids))), count.index)
158-
associate_public_ip_address = var.associate_public_ip_address
159-
disable_api_termination = var.disable_api_termination
160-
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
161-
placement_group = var.placement_group
162-
tenancy = var.tenancy
163-
host_id = var.host_id
164-
cpu_core_count = var.cpu_core_count
165-
cpu_threads_per_core = var.cpu_threads_per_core
166-
user_data = var.user_data
167-
user_data_base64 = var.user_data_base64
168-
user_data_replace_on_change = var.user_data_replace_on_change
169-
availability_zone = var.availability_zone
170-
get_password_data = var.get_password_data
171-
private_ip = var.private_ip
172-
secondary_private_ips = var.secondary_private_ips
158+
associate_public_ip_address = var.instance_configuration.associate_public_ip_address
159+
disable_api_termination = var.instance_configuration.disable_api_termination
160+
instance_initiated_shutdown_behavior = var.instance_configuration.instance_initiated_shutdown_behavior
161+
placement_group = var.instance_configuration.placement_group
162+
tenancy = var.instance_configuration.tenancy
163+
host_id = var.instance_configuration.host_id
164+
cpu_core_count = var.instance_configuration.cpu_core_count
165+
cpu_threads_per_core = var.instance_configuration.cpu_threads_per_core
166+
user_data = var.instance_configuration.user_data
167+
user_data_base64 = var.instance_configuration.user_data_base64
168+
user_data_replace_on_change = var.instance_configuration.user_data_replace_on_change
169+
availability_zone = var.instance_configuration.availability_zone
170+
get_password_data = var.instance_configuration.get_password_data
171+
private_ip = var.instance_configuration.private_ip
172+
secondary_private_ips = var.instance_configuration.secondary_private_ips
173173
iam_instance_profile = join("", aws_iam_instance_profile.default[*].name)
174-
source_dest_check = var.source_dest_check
175-
ipv6_address_count = var.ipv6_address_count
176-
ipv6_addresses = var.ipv6_addresses
177-
hibernation = var.hibernation
174+
source_dest_check = var.instance_configuration.source_dest_check
175+
ipv6_address_count = var.instance_configuration.ipv6_address_count
176+
ipv6_addresses = var.instance_configuration.ipv6_addresses
177+
hibernation = var.instance_configuration.hibernation
178+
178179
dynamic "cpu_options" {
179180
for_each = length(var.cpu_options) > 0 ? [var.cpu_options] : []
180181
content {
@@ -199,7 +200,7 @@ resource "aws_instance" "default" {
199200
}
200201

201202
dynamic "root_block_device" {
202-
for_each = var.root_block_device
203+
for_each = var.instance_configuration.root_block_device
203204
content {
204205
delete_on_termination = lookup(root_block_device.value, "delete_on_termination", null)
205206
encrypted = true
@@ -238,7 +239,7 @@ resource "aws_instance" "default" {
238239
}
239240

240241
dynamic "ephemeral_block_device" {
241-
for_each = var.ephemeral_block_device
242+
for_each = var.instance_configuration.ephemeral_block_device
242243
content {
243244
device_name = ephemeral_block_device.value.device_name
244245
no_device = lookup(ephemeral_block_device.value, "no_device", null)
@@ -372,42 +373,44 @@ resource "aws_route53_record" "default" {
372373
## Below Provides an EC2 Spot Instance Request resource. This allows instances to be requested on the spot market..
373374
##----------------------------------------------------------------------------------
374375
resource "aws_spot_instance_request" "default" {
375-
count = var.enable && var.spot_instance_enabled ? var.spot_instance_count : 0
376-
spot_price = var.spot_price
377-
wait_for_fulfillment = var.spot_wait_for_fulfillment
378-
spot_type = var.spot_type
379-
launch_group = var.spot_launch_group
380-
block_duration_minutes = var.spot_block_duration_minutes
381-
instance_interruption_behavior = var.spot_instance_interruption_behavior
382-
valid_until = var.spot_valid_until
383-
valid_from = var.spot_valid_from
384-
ami = var.ami == "" ? data.aws_ami.ubuntu.id : var.ami
385-
ebs_optimized = var.ebs_optimized
386-
instance_type = var.instance_type
376+
count = var.enable && var.spot_instance_enabled ? var.spot_instance_count : 0
377+
spot_price = var.spot_configuration.spot_price
378+
wait_for_fulfillment = var.spot_configuration.wait_for_fulfillment
379+
spot_type = var.spot_configuration.spot_type
380+
launch_group = var.spot_configuration.launch_group
381+
block_duration_minutes = var.spot_configuration.block_duration_minutes
382+
instance_interruption_behavior = var.spot_configuration.instance_interruption_behavior
383+
valid_until = var.spot_configuration.valid_until
384+
valid_from = var.spot_configuration.valid_from
385+
386+
# Instance configuration
387+
ami = var.instance_configuration.ami == "" ? data.aws_ami.ubuntu.id : var.instance_configuration.ami
388+
ebs_optimized = var.instance_configuration.ebs_optimized
389+
instance_type = var.instance_configuration.instance_type
387390
key_name = var.key_name == "" ? join("", aws_key_pair.default[*].key_name) : var.key_name
388-
monitoring = var.monitoring
391+
monitoring = var.instance_configuration.monitoring
389392
vpc_security_group_ids = length(var.sg_ids) < 1 ? aws_security_group.default[*].id : var.sg_ids
390393
subnet_id = element(distinct(compact(concat(var.subnet_ids))), count.index)
391-
associate_public_ip_address = var.associate_public_ip_address
392-
disable_api_termination = var.disable_api_termination
393-
instance_initiated_shutdown_behavior = var.instance_initiated_shutdown_behavior
394-
placement_group = var.placement_group
395-
tenancy = var.tenancy
396-
host_id = var.host_id
397-
cpu_core_count = var.cpu_core_count
398-
cpu_threads_per_core = var.cpu_threads_per_core
399-
user_data = var.user_data
400-
user_data_base64 = var.user_data_base64
401-
user_data_replace_on_change = var.user_data_replace_on_change
402-
availability_zone = var.availability_zone
403-
get_password_data = var.get_password_data
404-
private_ip = var.private_ip
405-
secondary_private_ips = var.secondary_private_ips
394+
associate_public_ip_address = var.instance_configuration.associate_public_ip_address
395+
disable_api_termination = var.instance_configuration.disable_api_termination
396+
instance_initiated_shutdown_behavior = var.instance_configuration.instance_initiated_shutdown_behavior
397+
placement_group = var.instance_configuration.placement_group
398+
tenancy = var.instance_configuration.tenancy
399+
host_id = var.instance_configuration.host_id
400+
cpu_core_count = var.instance_configuration.cpu_core_count
401+
cpu_threads_per_core = var.instance_configuration.cpu_threads_per_core
402+
user_data = var.instance_configuration.user_data
403+
user_data_base64 = var.instance_configuration.user_data_base64
404+
user_data_replace_on_change = var.instance_configuration.user_data_replace_on_change
405+
availability_zone = var.instance_configuration.availability_zone
406+
get_password_data = var.instance_configuration.get_password_data
407+
private_ip = var.instance_configuration.private_ip
408+
secondary_private_ips = var.instance_configuration.secondary_private_ips
406409
iam_instance_profile = join("", aws_iam_instance_profile.default[*].name)
407-
source_dest_check = var.source_dest_check
408-
ipv6_address_count = var.ipv6_address_count
409-
ipv6_addresses = var.ipv6_addresses
410-
hibernation = var.hibernation
410+
source_dest_check = var.instance_configuration.source_dest_check
411+
ipv6_address_count = var.instance_configuration.ipv6_address_count
412+
ipv6_addresses = var.instance_configuration.ipv6_addresses
413+
hibernation = var.instance_configuration.hibernation
411414

412415
dynamic "cpu_options" {
413416
for_each = length(var.cpu_options) > 0 ? [var.cpu_options] : []
@@ -433,7 +436,7 @@ resource "aws_spot_instance_request" "default" {
433436
}
434437

435438
dynamic "root_block_device" {
436-
for_each = var.root_block_device
439+
for_each = var.instance_configuration.root_block_device
437440
content {
438441
delete_on_termination = lookup(root_block_device.value, "delete_on_termination", null)
439442
encrypted = true
@@ -472,7 +475,7 @@ resource "aws_spot_instance_request" "default" {
472475
}
473476

474477
dynamic "ephemeral_block_device" {
475-
for_each = var.ephemeral_block_device
478+
for_each = var.instance_configuration.ephemeral_block_device
476479
content {
477480
device_name = ephemeral_block_device.value.device_name
478481
no_device = lookup(ephemeral_block_device.value, "no_device", null)

0 commit comments

Comments
 (0)