Tôi có một AWS Auto-Scaling Group, một cấu hình khởi động, và một chính sách Auto-Scaling Nhóm quy định tại Terraform như thế này:Groups Auto-Scaling Đừng Cập nhật vào Launch Configuration Change
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
}
}
Khi tôi thay đổi dữ liệu người dùng của tôi, một cấu hình khởi chạy mới được tạo và sau đó được gắn vào nhóm tự động mở rộng. Tôi sẽ giả định rằng điều này sẽ làm cho nhóm tự động mở rộng quy mô lên bởi var.asg_capacity
trường hợp, chờ 300 giây, và sau đó xé xuống những cái cũ theo OldestInstance
.
Khi tôi đã làm những điều tương tự trong CloudFormation, tôi đã sử dụng 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:
...
Có một analog cho điều này trong Terraform? Tôi thực sự muốn các nhóm tự động mở rộng của mình thay đổi khi tôi thay đổi cấu hình khởi chạy.
Cảm ơn câu trả lời của bạn. Thật đáng kinh ngạc là Terraform vẫn không cung cấp một cách tích hợp để làm điều này mà không kéo sợi và rách xuống một nhóm quy mô tự động trên mọi điều khoản. –
@NaftuliKay Có, thật không may, đây vẫn là sự cố mở trong cộng đồng Terraform: https://github.com/hashicorp/terraform/issues/1552. Sử dụng phương pháp 'create_before_destroy' ở trên là, bây giờ, giải pháp tốt nhất của bạn với mã hoàn toàn Terraform.Nó gần với triển khai xanh/xanh, vì vậy nó không phải là một lựa chọn tồi, nhưng nó không hoạt động cho mọi người và, phê bình, nó KHÔNG hoạt động với ASG có kích thước động. –