我创建了一个AMI,当使用systemd启动计算机时,该AMI会执行工作。由于工作不是时间紧迫的,因此我想使用AWS自动缩放组来优化成本。我正在使用Terraform来管理我的基础架构。
这是我到目前为止所拥有的:
# ...
resource "aws_launch_template" "default" {
name = "autoscaling-launch-template"
capacity_reservation_specification {
capacity_reservation_preference = "open"
}
credit_specification {
cpu_credits = "standard"
}
iam_instance_profile {
name = aws_iam_instance_profile.default.name
}
image_id = data.aws_ami.default.id
instance_market_options {
market_type = "spot"
}
instance_type = "t2.small"
key_name = var.master_key
monitoring {
enabled = true
}
placement {
availability_zone = "us-east-1a"
}
vpc_security_group_ids = [ "${aws_security_group.default.id}" ]
tag_specifications {
resource_type = "instance"
}
user_data = base64encode(local.user_data)
}
resource "aws_autoscaling_group" "default" {
name = "my-autoscaling-group"
min_size = 1
max_size = 5
desired_capacity = 2
availability_zones = [ "us-east-1a" ]
launch_template {
id = aws_launch_template.default.id
version = "$Latest"
}
lifecycle {
create_before_destroy = true
}
}
# ...
我想实现以下目标:
“高”和“低”价格应大致使用滚动平均值或类似方法定义。我不想维持最低和最高价格。
我一直想使用t2.small
。
如何在Terraform中实现这一目标?
答案 0 :(得分:0)
terraform注册表具有一个不错的经过验证的模块,用于创建自动缩放组:
https://registry.terraform.io/modules/terraform-aws-modules/autoscaling/aws/3.4.0
您可以使用spot_price
变量将竞价型实例启动到ASG中。