Skip to content

Commit 53fbc23

Browse files
authored
Merge branch 'wip/v6' into master
2 parents 521d43a + 10c84e8 commit 53fbc23

File tree

33 files changed

+1374
-669
lines changed

33 files changed

+1374
-669
lines changed

.pre-commit-config.yaml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
repos:
22
- repo: https://github.com/antonbabenko/pre-commit-terraform
3-
rev: v1.96.1
3+
rev: v1.96.2
44
hooks:
55
- id: terraform_fmt
66
- id: terraform_wrapper_module_for_each
@@ -17,7 +17,7 @@ repos:
1717
- '--args=--only=terraform_documented_variables'
1818
- '--args=--only=terraform_typed_variables'
1919
- '--args=--only=terraform_module_pinned_source'
20-
- '--args=--only=terraform_naming_convention'
20+
# - '--args=--only=terraform_naming_convention' # Disabled due to container definition variables requiring camelCase
2121
- '--args=--only=terraform_required_version'
2222
- '--args=--only=terraform_required_providers'
2323
- '--args=--only=terraform_standard_module_structure'

README.md

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -159,8 +159,8 @@ module "ecs" {
159159

160160
| Name | Version |
161161
|------|---------|
162-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
163-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.66.1 |
162+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3.10 |
163+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77 |
164164

165165
## Providers
166166

examples/complete/README.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ Note that this example may create resources which will incur monetary charges on
2626

2727
| Name | Version |
2828
|------|---------|
29-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
30-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.66.1 |
29+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3.10 |
30+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77 |
3131

3232
## Providers
3333

3434
| Name | Version |
3535
|------|---------|
36-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.66.1 |
36+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.77 |
3737

3838
## Modules
3939

examples/complete/main.tf

Lines changed: 21 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -102,19 +102,33 @@ module "ecs" {
102102
}
103103
}
104104
memory_reservation = 100
105+
106+
restart_policy = {
107+
enabled = true
108+
ignoredExitCodes = [1]
109+
restartAttemptPeriod = 60
110+
}
105111
}
106112
}
107113

108114
service_connect_configuration = {
109115
namespace = aws_service_discovery_http_namespace.this.arn
110-
service = {
111-
client_alias = {
112-
port = local.container_port
113-
dns_name = local.container_name
116+
service = [
117+
{
118+
client_alias = {
119+
port = local.container_port
120+
dns_name = local.container_name
121+
}
122+
123+
timeout = {
124+
idle_timeout_seconds = 20
125+
per_request_timeout_seconds = 30
126+
}
127+
128+
port_name = local.container_name
129+
discovery_name = local.container_name
114130
}
115-
port_name = local.container_name
116-
discovery_name = local.container_name
117-
}
131+
]
118132
}
119133

120134
load_balancer = {

examples/complete/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
terraform {
2-
required_version = ">= 1.0"
2+
required_version = ">= 1.3.10"
33

44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.66.1"
7+
version = ">= 5.77"
88
}
99
}
1010
}

examples/ec2-autoscaling/README.md

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ Note that this example may create resources which will incur monetary charges on
2626

2727
| Name | Version |
2828
|------|---------|
29-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
30-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.66.1 |
29+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3.10 |
30+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77 |
3131

3232
## Providers
3333

3434
| Name | Version |
3535
|------|---------|
36-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.66.1 |
36+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.77 |
3737

3838
## Modules
3939

@@ -74,6 +74,8 @@ No inputs.
7474
| <a name="output_service_iam_role_name"></a> [service\_iam\_role\_name](#output\_service\_iam\_role\_name) | Service IAM role name |
7575
| <a name="output_service_iam_role_unique_id"></a> [service\_iam\_role\_unique\_id](#output\_service\_iam\_role\_unique\_id) | Stable and unique string identifying the service IAM role |
7676
| <a name="output_service_id"></a> [service\_id](#output\_service\_id) | ARN that identifies the service |
77+
| <a name="output_service_infrastructure_iam_role_arn"></a> [service\_infrastructure\_iam\_role\_arn](#output\_service\_infrastructure\_iam\_role\_arn) | Infrastructure IAM role ARN |
78+
| <a name="output_service_infrastructure_iam_role_name"></a> [service\_infrastructure\_iam\_role\_name](#output\_service\_infrastructure\_iam\_role\_name) | Infrastructure IAM role name |
7779
| <a name="output_service_name"></a> [service\_name](#output\_service\_name) | Name of the service |
7880
| <a name="output_service_task_definition_arn"></a> [service\_task\_definition\_arn](#output\_service\_task\_definition\_arn) | Full ARN of the Task Definition (including both `family` and `revision`) |
7981
| <a name="output_service_task_definition_revision"></a> [service\_task\_definition\_revision](#output\_service\_task\_definition\_revision) | Revision of the task in a particular family |

examples/ec2-autoscaling/main.tf

Lines changed: 22 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,6 +36,7 @@ module "ecs_cluster" {
3636
# On-demand instances
3737
ex_1 = {
3838
auto_scaling_group_arn = module.autoscaling["ex_1"].autoscaling_group_arn
39+
managed_draining = "ENABLED"
3940
managed_termination_protection = "ENABLED"
4041

4142
managed_scaling = {
@@ -53,6 +54,7 @@ module "ecs_cluster" {
5354
# Spot instances
5455
ex_2 = {
5556
auto_scaling_group_arn = module.autoscaling["ex_2"].autoscaling_group_arn
57+
managed_draining = "ENABLED"
5658
managed_termination_protection = "ENABLED"
5759

5860
managed_scaling = {
@@ -93,8 +95,23 @@ module "ecs_service" {
9395
}
9496
}
9597

98+
volume_configuration = {
99+
ebs-volume = {
100+
managed_ebs_volume = {
101+
encrypted = true
102+
file_system_type = "xfs"
103+
size_in_gb = 5
104+
volume_type = "gp3"
105+
}
106+
}
107+
}
108+
96109
volume = {
97-
my-vol = {}
110+
my-vol = {},
111+
ebs-volume = {
112+
name = "ebs-volume"
113+
configure_at_launch = true
114+
}
98115
}
99116

100117
# Container definition(s)
@@ -113,6 +130,10 @@ module "ecs_service" {
113130
{
114131
sourceVolume = "my-vol",
115132
containerPath = "/var/www/my-vol"
133+
},
134+
{
135+
containerPath = "/ebs/data"
136+
sourceVolume = "ebs-volume"
116137
}
117138
]
118139

examples/ec2-autoscaling/outputs.tf

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -131,11 +131,12 @@ output "service_autoscaling_scheduled_actions" {
131131
value = module.ecs_service.autoscaling_scheduled_actions
132132
}
133133

134-
################################################################################
135-
# Application Load Balancer
136-
################################################################################
134+
output "service_infrastructure_iam_role_arn" {
135+
description = "Infrastructure IAM role ARN"
136+
value = module.ecs_service.infrastructure_iam_role_arn
137+
}
137138

138-
output "alb_dns_name" {
139-
description = "The DNS name of the load balancer"
140-
value = module.alb.dns_name
139+
output "service_infrastructure_iam_role_name" {
140+
description = "Infrastructure IAM role name"
141+
value = module.ecs_service.infrastructure_iam_role_name
141142
}

examples/ec2-autoscaling/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
terraform {
2-
required_version = ">= 1.0"
2+
required_version = ">= 1.3.10"
33

44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.66.1"
7+
version = ">= 5.77"
88
}
99
}
1010
}

examples/fargate/README.md

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -26,14 +26,14 @@ Note that this example may create resources which will incur monetary charges on
2626

2727
| Name | Version |
2828
|------|---------|
29-
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.0 |
30-
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 4.66.1 |
29+
| <a name="requirement_terraform"></a> [terraform](#requirement\_terraform) | >= 1.3.10 |
30+
| <a name="requirement_aws"></a> [aws](#requirement\_aws) | >= 5.77 |
3131

3232
## Providers
3333

3434
| Name | Version |
3535
|------|---------|
36-
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 4.66.1 |
36+
| <a name="provider_aws"></a> [aws](#provider\_aws) | >= 5.77 |
3737

3838
## Modules
3939

@@ -78,7 +78,6 @@ No inputs.
7878
| <a name="output_service_security_group_id"></a> [service\_security\_group\_id](#output\_service\_security\_group\_id) | ID of the security group |
7979
| <a name="output_service_task_definition_arn"></a> [service\_task\_definition\_arn](#output\_service\_task\_definition\_arn) | Full ARN of the Task Definition (including both `family` and `revision`) |
8080
| <a name="output_service_task_definition_family"></a> [service\_task\_definition\_family](#output\_service\_task\_definition\_family) | The unique name of the task definition |
81-
| <a name="output_service_task_definition_family_revision"></a> [service\_task\_definition\_family\_revision](#output\_service\_task\_definition\_family\_revision) | The family and revision (family:revision) of the task definition |
8281
| <a name="output_service_task_definition_revision"></a> [service\_task\_definition\_revision](#output\_service\_task\_definition\_revision) | Revision of the task in a particular family |
8382
| <a name="output_service_task_exec_iam_role_arn"></a> [service\_task\_exec\_iam\_role\_arn](#output\_service\_task\_exec\_iam\_role\_arn) | Task execution IAM role ARN |
8483
| <a name="output_service_task_exec_iam_role_name"></a> [service\_task\_exec\_iam\_role\_name](#output\_service\_task\_exec\_iam\_role\_name) | Task execution IAM role name |

examples/fargate/main.tf

Lines changed: 27 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -121,6 +121,12 @@ module "ecs_service" {
121121
}
122122
}
123123

124+
restart_policy = {
125+
enabled = true
126+
ignoredExitCodes = [1]
127+
restartAttemptPeriod = 60
128+
}
129+
124130
# Not required for fluent-bit, just an example
125131
volumes_from = [{
126132
sourceContainer = "fluent-bit"
@@ -133,14 +139,16 @@ module "ecs_service" {
133139

134140
service_connect_configuration = {
135141
namespace = aws_service_discovery_http_namespace.this.arn
136-
service = {
137-
client_alias = {
138-
port = local.container_port
139-
dns_name = local.container_name
142+
service = [
143+
{
144+
client_alias = {
145+
port = local.container_port
146+
dns_name = local.container_name
147+
}
148+
port_name = local.container_name
149+
discovery_name = local.container_name
140150
}
141-
port_name = local.container_name
142-
discovery_name = local.container_name
143-
}
151+
]
144152
}
145153

146154
load_balancer = {
@@ -152,21 +160,18 @@ module "ecs_service" {
152160
}
153161

154162
subnet_ids = module.vpc.private_subnets
155-
security_group_rules = {
163+
security_group_ingress_rules = {
156164
alb_ingress_3000 = {
157-
type = "ingress"
158-
from_port = local.container_port
159-
to_port = local.container_port
160-
protocol = "tcp"
161-
description = "Service port"
162-
source_security_group_id = module.alb.security_group_id
165+
description = "Service port"
166+
from_port = local.container_port
167+
ip_protocol = "tcp"
168+
referenced_security_group_id = module.alb.security_group_id
163169
}
170+
}
171+
security_group_egress_rules = {
164172
egress_all = {
165-
type = "egress"
166-
from_port = 0
167-
to_port = 0
168-
protocol = "-1"
169-
cidr_blocks = ["0.0.0.0/0"]
173+
ip_protocol = "-1"
174+
cidr_ipv4 = "0.0.0.0/0"
170175
}
171176
}
172177

@@ -218,13 +223,10 @@ module "ecs_task_definition" {
218223

219224
subnet_ids = module.vpc.private_subnets
220225

221-
security_group_rules = {
226+
security_group_egress_rules = {
222227
egress_all = {
223-
type = "egress"
224-
from_port = 0
225-
to_port = 0
226-
protocol = "-1"
227-
cidr_blocks = ["0.0.0.0/0"]
228+
ip_protocol = "-1"
229+
cidr_ipv4 = "0.0.0.0/0"
228230
}
229231
}
230232

examples/fargate/outputs.tf

Lines changed: 1 addition & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -76,11 +76,6 @@ output "service_task_definition_family" {
7676
value = module.ecs_service.task_definition_family
7777
}
7878

79-
output "service_task_definition_family_revision" {
80-
description = "The family and revision (family:revision) of the task definition"
81-
value = module.ecs_service.task_definition_family_revision
82-
}
83-
8479
output "service_task_exec_iam_role_name" {
8580
description = "Task execution IAM role name"
8681
value = module.ecs_service.task_exec_iam_role_name
@@ -159,7 +154,7 @@ output "task_definition_run_task_command" {
159154
description = "awscli command to run the standalone task"
160155
value = <<EOT
161156
aws ecs run-task --cluster ${module.ecs_cluster.name} \
162-
--task-definition ${module.ecs_task_definition.task_definition_family_revision} \
157+
--task-definition ${module.ecs_task_definition.task_definition_family}:${module.ecs_task_definition.task_definition_revision} \
163158
--network-configuration "awsvpcConfiguration={subnets=[${join(",", module.vpc.private_subnets)}],securityGroups=[${module.ecs_task_definition.security_group_id}]}" \
164159
--region ${local.region}
165160
EOT

examples/fargate/versions.tf

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
11
terraform {
2-
required_version = ">= 1.0"
2+
required_version = ">= 1.3.10"
33

44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 4.66.1"
7+
version = ">= 5.77"
88
}
99
}
1010
}

main.tf

Lines changed: 13 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -86,6 +86,7 @@ module "service" {
8686
service_registries = lookup(each.value, "service_registries", {})
8787
timeouts = try(each.value.timeouts, {})
8888
triggers = try(each.value.triggers, {})
89+
volume_configuration = try(each.value.volume_configuration, {})
8990
wait_for_steady_state = try(each.value.wait_for_steady_state, null)
9091

9192
# Service IAM role
@@ -99,6 +100,16 @@ module "service" {
99100
iam_role_tags = try(each.value.iam_role_tags, {})
100101
iam_role_statements = lookup(each.value, "iam_role_statements", {})
101102

103+
# ECS infrastructure IAM role
104+
create_infrastructure_iam_role = try(each.value.create_infrastructure_iam_role, true)
105+
infrastructure_iam_role_arn = try(each.value.infrastructure_iam_role_arn, null)
106+
infrastructure_iam_role_name = try(each.value.infrastructure_iam_role_name, null)
107+
infrastructure_iam_role_use_name_prefix = try(each.value.infrastructure_iam_role_use_name_prefix, true)
108+
infrastructure_iam_role_path = try(each.value.infrastructure_iam_role_path, null)
109+
infrastructure_iam_role_description = try(each.value.infrastructure_iam_role_description, null)
110+
infrastructure_iam_role_permissions_boundary = try(each.value.infrastructure_iam_role_permissions_boundary, null)
111+
infrastructure_iam_role_tags = try(each.value.infrastructure_iam_role_tags, {})
112+
102113
# Task definition
103114
create_task_definition = try(each.value.create_task_definition, true)
104115
task_definition_arn = lookup(each.value, "task_definition_arn", null)
@@ -190,7 +201,8 @@ module "service" {
190201
security_group_name = try(each.value.security_group_name, null)
191202
security_group_use_name_prefix = try(each.value.security_group_use_name_prefix, true)
192203
security_group_description = try(each.value.security_group_description, null)
193-
security_group_rules = lookup(each.value, "security_group_rules", {})
204+
security_group_ingress_rules = lookup(each.value, "security_group_ingress_rules", {})
205+
security_group_egress_rules = lookup(each.value, "security_group_egress_rules", {})
194206
security_group_tags = try(each.value.security_group_tags, {})
195207

196208
tags = merge(var.tags, try(each.value.tags, {}))

0 commit comments

Comments
 (0)