我有一個AWS自動縮放集團,一個啓動配置,並在Terraform這樣定義的自動縮放組策略:自動縮放組不要啓動配置變化更新
resource "aws_autoscaling_group" "default" {
name = "..."
health_check_type = "EC2"
vpc_zone_identifier = ["${...}"]
min_size = "${var.asg_capacity}"
max_size = "${var.asg_capacity * 2}"
desired_capacity = "${var.asg_capacity}"
launch_configuration = "${aws_launch_configuration.default.id}"
termination_policies = ["OldestInstance"]
}
resource "aws_autoscaling_policy" "default" {
name = "..."
autoscaling_group_name = "${aws_autoscaling_group.default.name}"
scaling_adjustment = "${var.asg_capacity}"
adjustment_type = "ChangeInCapacity"
cooldown = 300
}
resource "aws_launch_configuration" "default" {
name_prefix = "..._"
image_id = "${var.coreos_ami_id}"
instance_type = "${var.ec2_instance_type}"
iam_instance_profile = "${aws_iam_instance_profile.default.arn}"
key_name = "..."
security_groups = ["${aws_security_group.default.id}"]
user_data = "${data.template_file.cloud_init.rendered}"
lifecycle {
create_before_destroy = true
}
}
當我更改我的用戶數據,將創建新的啓動配置,然後將其附加到自動縮放組。我認爲這會導致自動縮放組擴大var.asg_capacity
個實例,等待300秒,然後按照OldestInstance
拆除舊的。
當我在CloudFormation也做過類似的事情,我已經使用the following configuration options:
ASG:
Type: AWS::AutoScaling::AutoScalingGroup
UpdatePolicy:
AutoScaleRollingUpdate:
# during a scale, 6 instances in service
MaxBatchSize: 3
MinInstancesInService: 3
PauseTime: PT5M
Properties:
...
是否有Terraform這個模擬?當我更改啓動配置時,我非常希望自動縮放組更改。
謝謝你的回答。令人驚訝的是Terraform仍然沒有提供一種內置的方式來完成這個任務,而不需要在每個規定上輪換並拆除一個自動擴展組。 –
@NaftuliKay不幸的是,這仍然是Terraform社區中的一個未解決的問題:https://github.com/hashicorp/terraform/issues/1552。目前,使用上面的'create_before_destroy'方法是純粹的Terraform代碼的最佳解決方案。它接近藍色/綠色的部署,所以這不是一個壞的選擇,但它不適用於所有人,而且關鍵的是它不適用於動態大小的ASG。 –