Terraform aws aws_autoscaling_schedule带有递归,开始时间从第二天开始,而不是从当前



我们有当前策略的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]
}
}

相关内容

  • 没有找到相关文章

最新更新