Mam AWS Automatyczne Skalowanie Group, konfiguracji startowej, oraz polisy Auto-Scaling grupy zdefiniowanej w Terraform tak:autoskalowanie Grupy Nie aktualizuj na uruchamianie Konfiguracja Zmień
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
}
}
Kiedy zmień moje dane użytkownika, zostanie utworzona nowa konfiguracja uruchamiania, a następnie dołączona do grupy automatycznego skalowania. Zakładam, że spowodowałoby to powiększenie grupy automatycznego skalowania o instancje var.asg_capacity
, odczekanie 300 sekund, a następnie zniszczenie starych zgodnie z OldestInstance
.
Kiedy mam zrobić podobne rzeczy w CloudFormation, Użyłem 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:
...
Czy istnieje analogowe za to w Terraform? Bardzo chciałbym, aby moje grupy automatycznego skalowania zmieniły się po zmianie konfiguracji uruchamiania.
Dziękuję za odpowiedź. Jest zdumiewające, że Terraform nadal nie zapewnia wbudowanego sposobu, aby to zrobić bez obracania się i zrywania grupy automatycznej skalowania na każdym poziomie. –
@NaftuliKay Tak, niestety, jest to nadal otwarty problem w społeczności Terraform: https://github.com/hashicorp/terraform/issues/1552. Zastosowanie powyższego podejścia 'create_before_destroy' jest teraz najlepszym rozwiązaniem z czysto terraformowym kodem.Jest zbliżony do niebiesko-zielonego wdrożenia, więc nie jest to zła opcja, ale nie działa dla wszystkich i, co krytyczne, NIE działa z dynamicznymi rozmiarami ASG. –