我有一个Terraform脚本,可以创建启动配置,自动缩放组,单个ALB,一个目标组和一个监听器。使用自动缩放组启动实例。
如何在同一个脚本中通过Terraform在目标组中添加新启动的实例?
resource "aws_launch_configuration" "CF2TF-LC" {
name = "CF2TF-LC"
depends_on = ["aws_iam_role_policy_attachment.CF2TF-IAM-PA", "aws_security_group.CF2TF-SG-Web"]
image_id = "ami-14c5486b"
instance_type = "t2.micro"
iam_instance_profile = "${aws_iam_instance_profile.CF2TF-IAM-IP.id}"
key_name = "CF2TF"
security_groups = ["${aws_security_group.CF2TF-SG-Web.id}"]
user_data = "${template_file.CF2TF-UserData.rendered}"
}
resource "aws_autoscaling_group" "CF2TF-ASG" {
name = "CF2TF-ASG"
depends_on = ["aws_launch_configuration.CF2TF-LC"]
vpc_zone_identifier = ["${aws_subnet.CF2TF-Subnet-1a.id}", "${aws_subnet.CF2TF-Subnet-1d.id}"]
max_size = 3
min_size = 2
health_check_grace_period = 300
health_check_type = "EC2"
desired_capacity = 2
force_delete = true
launch_configuration = "${aws_launch_configuration.CF2TF-LC.id}"
}
resource "aws_lb" "CF2TF-ALB" {
name = "CF2TF-ALB"
subnets = ["${aws_subnet.CF2TF-Subnet-1a.id}", "${aws_subnet.CF2TF-Subnet-1d.id}"]
internal = false
load_balancer_type = "application"
security_groups = ["${aws_security_group.CF2TF-SG-Web.id}"]
tags {
Name = "WebSrv"
Environment = "Dev"
}
}
resource "aws_lb_target_group" "CF2TF-TargetGroup" {
name = "CF2TF-TargetGroup"
depends_on = ["aws_vpc.CF2TF-VPC"]
port = 80
protocol = "HTTP"
vpc_id = "${aws_vpc.CF2TF-VPC.id}"
target_type = "instance"
health_check {
interval = 30
path = "/index.html"
port = 80
healthy_threshold = 5
unhealthy_threshold = 2
timeout = 5
protocol = "HTTP"
matcher = "200,202"
}
}
resource "aws_lb_listener" "CF2TF-ALB-Listener" {
//depends_on = ["aws_lb.CF2TF-ALB.id", "aws_lb_target_group.CF2TF-TargetGroup.id"]
load_balancer_arn = "${aws_lb.CF2TF-ALB.arn}"
port = "80"
protocol = "HTTP"
default_action {
target_group_arn = "${aws_lb_target_group.CF2TF-TargetGroup.arn}"
type = "forward"
}
}
答案 0 :(得分:3)
aws_autoscaling_group
资源需要一个target_group_arns
parameter,它将向目标组注册ASG,以便所有实例都在负载均衡器的目标组中注册,因为它们出现并正确排空在终止之前的负载均衡器。
因此,您的ASG资源应如下所示:
resource "aws_autoscaling_group" "CF2TF-ASG" {
name = "CF2TF-ASG"
depends_on = ["aws_launch_configuration.CF2TF-LC"]
vpc_zone_identifier = ["${aws_subnet.CF2TF-Subnet-1a.id}", "${aws_subnet.CF2TF-Subnet-1d.id}"]
max_size = 3
min_size = 2
health_check_grace_period = 300
health_check_type = "EC2"
desired_capacity = 2
force_delete = true
launch_configuration = "${aws_launch_configuration.CF2TF-LC.id}"
target_group_arns = ["${aws_lb_target_group.CF2TF-TargetGroup.arn}"]
}
答案 1 :(得分:1)
aws_autoscaling_group资源实现了一个参数target_group_arns,可以完全满足您的需求。只需将此行添加到您的自动扩展组资源:
target_group_arns = "${aws_lb_target_group.CF2TF-TargetGroup.arn}"