我们有当前策略的asg。示例当前日期时间UTC:2020年5月23日上午0600我有策略在cron时间1000 AM停止和启动实例但当我现在申请地形计划时,在aws,我们可以看到政策开始时间为5月24日上午1000点。
所以问题是为什么它不考虑今天的日期
政策目标:每天拆除并创建新实例
resource "aws_autoscaling_schedule" "scale_down" {
scheduled_action_name = "scale_down"
min_size = 0
max_size = 0
recurrence = "0 10 * * *"
desired_capacity = 1
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
resource "aws_autoscaling_schedule" "scale_up" {
scheduled_action_name = "scale_up"
min_size = 1
max_size = 1
recurrence = "10 10 * * *"
desired_capacity = 1
autoscaling_group_name = "${aws_autoscaling_group.asg.name}"
}
我有这样的解决方法,看看并给我你的意见。重复的想法是,一旦你创建了,你就不再修改了。我把一天的最后一分钟都放进去了。
locals {
today_date = formatdate("YYYY-MM-DD",timestamp())
min = 0
max = 1
}
resource "aws_autoscaling_schedule" "off" {
scheduled_action_name = "off_instance"
min_size = local.min
max_size = local.max
desired_capacity = 0
start_time = "${local.today_date}T23:59:00Z"
recurrence = "0 ${var.hour_to_switch_off} * * *"
autoscaling_group_name = aws_autoscaling_group.bastion.name
lifecycle {
ignore_changes = [start_time]
}
}
resource "aws_autoscaling_schedule" "on" {
scheduled_action_name = "on_instance"
min_size = local.min
max_size = local.max
desired_capacity = 1
start_time = "${local.today_date}T23:59:00Z"
recurrence = "0 ${var.hour_to_switch_on} * * MON-FRI"
autoscaling_group_name = aws_autoscaling_group.bastion.name
lifecycle {
ignore_changes = [start_time]
}
}
asg计划的开始日期是有问题的,即使您在UI中设置了它。有时它会指定今天作为开始日,另一天则指定为明天。
但是,您可以绕过这一点,在对地形进行更改后手动编辑开始日期和时间,并验证它是否是您想要的。
我能够使用timestamp/timeadd函数,并添加了额外的30分钟。这允许初始部署工作。但它变得复杂起来。我观察到的是";"开始时间";这就是节目的运作方式。因此,您很可能希望在假定运行cron/recuration之后部署您的开始时间。该重复周期会将开始时间重置为下一个重复周期。请确保包含生命周期忽略更改,以便重新应用不会触发对开始时间的更新。
resource "aws_autoscaling_schedule" "full" {
scheduled_action_name = "up_scale"
min_size = var.asg_min
max_size = var.asg_max
desired_capacity = var.asg_desired_capacity
recurrence = var.asg_schedule_full_cron
start_time = timeadd(timestamp(), "30m") #adjust to runtime
time_zone = "US/Central" #set to your region
autoscaling_group_name = aws_autoscaling_group.JBoss_EAP_ASG.name
# Ignore changes to the start_time, otherwise the resource is re-created with every apply
lifecycle {
ignore_changes = [start_time]
}
}