forked from terraform-community-modules/tf_aws_ecs
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Allows configuring time based autoscaling for the Infrastructure ECS Cluster's autoscaling group. * Cron expressions can be provided to set the desired capacity to the min or max sizes. Custom scaling sizes can also be provided, to set the min/max sizes for a given cron expression (in which case the min size will be set as the desired capacity)
- Loading branch information
1 parent
2e6351f
commit 04b975c
Showing
2 changed files
with
63 additions
and
0 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,42 @@ | ||
locals { | ||
autoscaling_time_based_max = toset(var.autoscaling_time_based_max) | ||
autoscaling_time_based_min = toset(var.autoscaling_time_based_min) | ||
autoscaling_time_based_custom = { | ||
for custom in toset(var.autoscaling_time_based_custom) : "${custom["min"]}-${custom["max"]} ${custom["cron"]}" => custom | ||
} | ||
} | ||
|
||
resource "aws_autoscaling_schedule" "ecs_infrastructure_time_based_max" { | ||
for_each = local.autoscaling_time_based_max | ||
|
||
autoscaling_group_name = aws_autoscaling_group.ecs.name | ||
scheduled_action_name = "asg-${aws_launch_template.ecs.name}-schedule-max ${each.value}" | ||
time_zone = "Europe/London" | ||
desired_capacity = var.max_servers | ||
min_size = -1 | ||
max_size = -1 | ||
recurrence = each.value | ||
} | ||
|
||
resource "aws_autoscaling_schedule" "ecs_infrastructure_time_based_min" { | ||
for_each = local.autoscaling_time_based_min | ||
|
||
autoscaling_group_name = aws_autoscaling_group.ecs.name | ||
scheduled_action_name = "asg-${aws_launch_template.ecs.name}-schedule-min ${each.value}" | ||
time_zone = "Europe/London" | ||
desired_capacity = var.min_servers | ||
min_size = -1 | ||
max_size = -1 | ||
recurrence = each.value | ||
} | ||
|
||
resource "aws_autoscaling_schedule" "ecs_infrastructure_time_based_custom" { | ||
for_each = local.autoscaling_time_based_custom | ||
|
||
autoscaling_group_name = aws_autoscaling_group.ecs.name | ||
scheduled_action_name = "asg-${aws_launch_template.ecs.name}-schedule-custom ${each.value["cron"]} ${each.value["min"]}-${each.value["max"]}" | ||
desired_capacity = each.value["min"] | ||
min_size = each.value["min"] | ||
max_size = each.value["max"] | ||
recurrence = each.value["cron"] | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters