在 Terraform 中为价格配置 AWS 自动扩展组?
Posted
技术标签:
【中文标题】在 Terraform 中为价格配置 AWS 自动扩展组?【英文标题】:Configure an AWS auto-scaling group for price in Terraform? 【发布时间】:2020-03-27 04:04:00 【问题描述】:我创建了一个 AMI,它在使用 systemd 启动机器时执行工作。由于这项工作对时间要求不高,我想使用 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 中实现这一点?
【问题讨论】:
【参考方案1】:terraform 注册表有一个很好的验证模块,用于创建自动缩放组:
https://registry.terraform.io/modules/terraform-aws-modules/autoscaling/aws/3.4.0
您可以使用 spot_price
变量将 Spot 实例启动到 ASG。
【讨论】:
以上是关于在 Terraform 中为价格配置 AWS 自动扩展组?的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Terraform 配置 AWS EKS 自动扩缩器?
在另一个模块中为 EC2 添加指定子网 - AWS Terraform -