Skip to content

Commit a610694

Browse files
committed
feat: Add support for CANARY/LINEAR deployment configuration
1 parent 69ee449 commit a610694

File tree

5 files changed

+52
-3
lines changed

5 files changed

+52
-3
lines changed

examples/fargate/main.tf

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -62,9 +62,14 @@ module "ecs_service" {
6262

6363
# for blue/green deployments
6464
deployment_configuration = {
65-
strategy = "BLUE_GREEN"
65+
strategy = "LINEAR"
6666
bake_time_in_minutes = 2
6767

68+
linear_configuration = {
69+
step_percent = 20
70+
step_bake_time_in_minutes = 1
71+
}
72+
6873
# # Example config using lifecycle hooks
6974
# lifecycle_hook = {
7075
# success = {

examples/fargate/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 6.14"
7+
version = ">= 6.21"
88
}
99
}
1010
}

modules/service/main.tf

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -82,6 +82,24 @@ resource "aws_ecs_service" "this" {
8282
strategy = deployment_configuration.value.strategy
8383
bake_time_in_minutes = deployment_configuration.value.bake_time_in_minutes
8484

85+
dynamic "linear_configuration" {
86+
for_each = deployment_configuration.value.linear_configuration != null ? [deployment_configuration.value.linear_configuration] : []
87+
88+
content {
89+
step_percent = linear_configuration.value.step_percent
90+
step_bake_time_in_minutes = linear_configuration.value.step_bake_time_in_minutes
91+
}
92+
}
93+
94+
dynamic "canary_configuration" {
95+
for_each = deployment_configuration.value.canary_configuration != null ? [deployment_configuration.value.canary_configuration] : []
96+
97+
content {
98+
canary_percent = canary_configuration.value.canary_percent
99+
canary_bake_time_in_minutes = canary_configuration.value.canary_bake_time_in_minutes
100+
}
101+
}
102+
85103
dynamic "lifecycle_hook" {
86104
for_each = deployment_configuration.value.lifecycle_hook != null ? deployment_configuration.value.lifecycle_hook : {}
87105

@@ -405,6 +423,24 @@ resource "aws_ecs_service" "ignore_task_definition" {
405423
strategy = deployment_configuration.value.strategy
406424
bake_time_in_minutes = deployment_configuration.value.bake_time_in_minutes
407425

426+
dynamic "linear_configuration" {
427+
for_each = deployment_configuration.value.linear_configuration != null ? [deployment_configuration.value.linear_configuration] : []
428+
429+
content {
430+
step_percent = linear_configuration.value.step_percent
431+
step_bake_time_in_minutes = linear_configuration.value.step_bake_time_in_minutes
432+
}
433+
}
434+
435+
dynamic "canary_configuration" {
436+
for_each = deployment_configuration.value.canary_configuration != null ? [deployment_configuration.value.canary_configuration] : []
437+
438+
content {
439+
canary_percent = canary_configuration.value.canary_percent
440+
canary_bake_time_in_minutes = canary_configuration.value.canary_bake_time_in_minutes
441+
}
442+
}
443+
408444
dynamic "lifecycle_hook" {
409445
for_each = deployment_configuration.value.lifecycle_hook != null ? deployment_configuration.value.lifecycle_hook : {}
410446

modules/service/variables.tf

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -83,6 +83,14 @@ variable "deployment_configuration" {
8383
type = object({
8484
strategy = optional(string)
8585
bake_time_in_minutes = optional(string)
86+
canary_configuration = optional(object({
87+
canary_bake_time_in_minutes = string
88+
canary_percent = string
89+
}))
90+
linear_configuration = optional(object({
91+
step_bake_time_in_minutes = string
92+
step_percent = string
93+
}))
8694
lifecycle_hook = optional(map(object({
8795
hook_target_arn = string
8896
role_arn = string

modules/service/versions.tf

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ terraform {
44
required_providers {
55
aws = {
66
source = "hashicorp/aws"
7-
version = ">= 6.14"
7+
version = ">= 6.21"
88
}
99
}
1010
}

0 commit comments

Comments
 (0)