मैं एक एडब्ल्यूएस ऑटो स्केलिंग समूह, एक लॉन्च विन्यास, और एक ऑटो स्केलिंग समूह नीति इस तरह 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 में इस के लिए एक एनालॉग है? जब मैं लॉन्च कॉन्फ़िगरेशन बदलता हूं तो मैं वास्तव में अपने ऑटो-स्केलिंग समूहों को बदलना चाहता हूं।
आपके उत्तर के लिए धन्यवाद। यह आश्चर्यजनक है कि टेराफॉर्म अभी भी हर प्रावधान पर एक ऑटो-स्केलिंग समूह को कताई और फाड़ने के बिना ऐसा करने का एक अंतर्निहित तरीका प्रदान नहीं करता है। –
@NaftuliKay हां, दुर्भाग्यवश, यह अभी भी टेराफॉर्म समुदाय में एक खुली समस्या है: https://github.com/hashicorp/terraform/issues/1552। ऊपर 'create_before_destroy' दृष्टिकोण का उपयोग करना, अभी के लिए, पूरी तरह से टेराफॉर्म कोड के साथ आपका सबसे अच्छा समाधान है।यह नीली/हरे रंग की तैनाती के करीब है, इसलिए यह एक बुरा विकल्प नहीं है, लेकिन यह सभी के लिए काम नहीं करता है और, गंभीर रूप से, यह गतिशील रूप से आकार वाले एएसजी के साथ काम नहीं करता है। –