起動構成、自動スケーリンググループ、単一のALB、1つのターゲットグループ、およびリスナーを作成するTerraformスクリプトがあります。インスタンスは、自動スケーリンググループを使用して起動されます。
同じスクリプトで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"
}
}
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}"]
}
Aws_autoscaling_groupリソースは、パラメーター target_group_arns を実装して、必要なことを正確に実行します。この行を自動スケーリンググループリソースに追加するだけです。
target_group_arns = "${aws_lb_target_group.CF2TF-TargetGroup.arn}"