Настройте step_adjustment в aws_autoscaling_policy из переменной в terraform - PullRequest
0 голосов
/ 17 апреля 2020

Я настраиваю модуль для настройки автоматического масштабирования в ASG в terraform. В идеале я хотел бы передать список карт моему модулю и пропустить через них l oop, добавив в политику step_adjustment для каждой карты в списке, однако, похоже, это не сработает.

Текущая настройка:

  name = "Example Auto-Scale Up Policy"
  policy_type = "StepScaling"
  autoscaling_group_name = "${aws_autoscaling_group.example_asg.name}"
  adjustment_type = "PercentChangeInCapacity"
  estimated_instance_warmup = 300
  step_adjustment {
    scaling_adjustment          = 20
    metric_interval_lower_bound = 0
    metric_interval_upper_bound = 5
  }
  step_adjustment {
    scaling_adjustment          = 25
    metric_interval_lower_bound = 5
    metric_interval_upper_bound = 15
  }
  step_adjustment {
    scaling_adjustment          = 50
    metric_interval_lower_bound = 15
  }
  min_adjustment_magnitude  = 4
}

Я просто хочу предоставить три step_adjustments в качестве переменных в мой модуль.

1 Ответ

0 голосов
/ 17 апреля 2020

Таким образом, вы можете сделать это следующим образом:

variable "step_adjustments" {
    type        = list(object({ metric_interval_lower_bound = string, metric_interval_upper_bound = string, scaling_adjustment = string }))
    default     = []
}

# inside your resource
resource "aws_appautoscaling_policy" "scale_up" {
  name = "Example Auto-Scale Up Policy"
  policy_type = "StepScaling"
  autoscaling_group_name = "${aws_autoscaling_group.example_asg.name}"
  adjustment_type = "PercentChangeInCapacity"
  estimated_instance_warmup = 300 
  dynamic "step_adjustment" {
    for_each = var.step_adjustments
    content {
      metric_interval_lower_bound = lookup(step_adjustment.value, "metric_interval_lower_bound")
      metric_interval_upper_bound = lookup(step_adjustment.value, "metric_interval_upper_bound")
      scaling_adjustment          = lookup(step_adjustment.value, "scaling_adjustment")
    }
  }
}

# example input into your module
step_adjustments = [
{
  scaling_adjustment          = 2
  metric_interval_lower_bound = 0
  metric_interval_upper_bound = 5
},
{
  scaling_adjustment          = 1
  metric_interval_lower_bound = 5
  metric_interval_upper_bound = "" # indicates infinity
}]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...