如何使用 terraform 将多个 aws 目标组添加到多个自动缩放组

视觉

我正在创建 4 个目标组和 4 个 nlb,计数基于屏幕记录器的数量 (01-04)。每个 AZ 也有 3 个 ASG。我想为每个 ASG 添加 4 个目标组。例如:fw_asg_az1 应该附加 4 个目标组,fw_asg_az2 和 fw_asg_az3 的方法相同,需要附加相同的目标组。

将来,如果我在变量中添加 server05 并重新运行 terraform,则应将新创建的目标组添加到所有三个 ASG 中

我的 main.tf 中的变量

screenrecorders = [
      "server01",
      "server02",
      "server03",
      "server04"  
  ]

变量.tf

variable "screenrecorders" {
  description = "List of screen recorders"
  type = list(string)
}

主文件

resource "aws_autoscaling_group" "fw_asg_az1" {
  name = "${var.deployment_prefix}-asg-${var.az1}"
  availability_zones = [var.az1]
  health_check_grace_period = 300
  health_check_type         = "ELB"
  default_cooldown          = 600
  launch_template {
    id      = aws_launch_template.fw_launch_template_az1.id
    version = "$Latest"
  }
  min_size = 1
  max_size = 5
  tag {
    key                 = "Name"
    value               = "${var.deployment_prefix}-${var.az1}"
    propagate_at_launch = true
  }
  target_group_arns = ["${aws_lb_target_group.tg_scr_vr.arn}"]
  depends_on = [aws_lb_target_group.tg_scr_vr]   
}

resource "aws_autoscaling_group" "fw_asg_az2" {
  name = "${var.deployment_prefix}-asg-${var.az2}"
  availability_zones = [var.az2]
  health_check_grace_period = 300
  health_check_type         = "ELB"
  default_cooldown          = 600
  launch_template {
    id      = aws_launch_template.fw_launch_template_az2.id
    version = "$Latest"
  }
  min_size = 1
  max_size = 5
  tag {
    key                 = "Name"
    value               = "${var.deployment_prefix}-${var.az2}"
    propagate_at_launch = true
  } 
  target_group_arns = ["${aws_lb_target_group.tg_scr_vr.arn}"]
  depends_on = [aws_lb_target_group.tg_scr_vr]   
}

resource "aws_autoscaling_group" "fw_asg_az3" {
  name = "${var.deployment_prefix}-asg-${var.az3}"
  availability_zones = [var.az3]
  #availability_zones = [data.aws_availability_zones.all.names]
  health_check_grace_period = 300
  health_check_type         = "ELB"
  default_cooldown          = 600
  launch_template {
    id      = aws_launch_template.fw_launch_template_az3.id
    version = "$Latest"
  }
  min_size = 1
  max_size = 5
  tag {
    key                 = "Name"
    value               = "${var.deployment_prefix}-${var.az3}"
    propagate_at_launch = true
  }
  target_group_arns = ["${aws_lb_target_group.tg_scr_vr.arn}"]
  depends_on = [aws_lb_target_group.tg_scr_vr]
  
}

###############################################################################
#                              ELB Target Groups
###############################################################################
resource "aws_lb_target_group" "tg_scr_vr" {
  count       = length(var.screenrecorders)
  name        = "tg-${var.screenrecorders[count.index]}"
  target_type = "instance"
  protocol    = "TCP"
  port        = "80"
  vpc_id      = var.vpc_id
  health_check {
    protocol = "TCP"
    port     = "traffic-port"
    

  }
}

###############################################################################
#                              ELB
###############################################################################
resource "aws_lb" "lb_scr_vr" {
  count              = length(var.screenrecorders)
  name               = "lb-${var.screenrecorders[count.index]}"
  load_balancer_type = "network"
  internal           = false
  ip_address_type    = "ipv4"
  subnet_mapping {
    subnet_id = var.az1_fw_public_subnet_id
  }
  subnet_mapping {
    subnet_id = var.az2_fw_public_subnet_id
  }
  subnet_mapping {
    subnet_id = var.az3_fw_public_subnet_id
  }
}

我得到的错误

Error: Missing resource instance key

  on .terraform/modules/fw/main.tf line 147, in resource "aws_autoscaling_group" "fw_asg_az1":
 147:   target_group_arns = ["${aws_lb_target_group.tg_scr_vr.arn}"]

Because aws_lb_target_group.tg_scr_vr has "count" set, its attributes must
be accessed on specific instances.

For example, to correlate with indices of a referring resource, use:
    aws_lb_target_group.tg_scr_vr[count.index]

我按照错误中的建议尝试了以下操作,但仍然无效

aws_lb_target_group.tg_scr_vr[count.index]

我是 terraform 的新手,仍在学习,非常感谢来自 stackoverflow 社区的任何帮助。

马尔钦

代替

 target_group_arns = ["${aws_lb_target_group.tg_scr_vr.arn}"]

它应该是 :

 target_group_arns = aws_lb_target_group.tg_scr_vr[*].arn

如果您想将所有四个 TF 与单个 ASG 相关联。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

如何按情况将多个列添加到组?

如何使用Terraform将多个服务器添加到Hetzner Cloud中的LoadBalancer?

如何在 AWS lambda 中一次将用户添加到多个认知组中

使用Terraform将多个S3路径添加到胶履带

Terraform:AWS Target Group无法添加多个目标

使用Terraform部署到多个AWS账户吗?

如何将 AWS cloudwatch 事件添加到基于具有 terraform 的容器映像的 aws_lambda_function?

在Linux中,如何通过单个命令将多个用户添加到组中?

JAVA:如何将多个成员添加到 LDAP 中的组

将目标组添加到应用程序侦听器(AWS CDK PYTHON)

如何使用Terraform将范围添加到托管规则

如何使用 Terraform 将 Active Directory 添加到 APIM?

如何使用Terraform将ECS属性添加到实例

AWS - 如何使用 CDK/CloudFormation 将服务链接角色传递给自动缩放组?

如何将多个实例添加到aws_network_interface_sg_attachment?

如何在自动缩放组中添加AWS New Elb

AWS Cognito / Amplify-将新用户注册自动添加到用户组

在创建部署组时,是否阻止AWS CodeDeploy将生命周期挂钩添加到自动扩展组?

如何使用C#自动将联系人添加到Microsoft Teams组

如何使用一个循环添加到多个组

如何使用Terraform将多个IAM策略附加到IAM角色?

如何顺序使用多个Terraform Provider

使用Terraform在AWS上的多个VPC上创建多个子网

如何在Microsoft Graph API中编写UpdateAsync的服务测试(将多个成员添加到单个请求中的组)

使用 boto3 将目标组添加到 ECS Fargate 任务

无法使用Terraform在Targer组内添加多个target_id

如何自动扩展AWS目标组?

如何管理多个 Terraform 状态

如何管理多个仓库的Terraform