【问题标题】:Terraform - ELB attempts re-create instead of updatingTerraform - ELB 尝试重新创建而不是更新
【发布时间】:2023-04-02 20:20:01
【问题描述】:

更新:terraform destroy 没有删除 ELB,但 apply 命令尝试重新创建。即使没有对 ELB 模块进行任何更改,只要运行命令 terraform apply 就会尝试重新创建 ELB。

这是什么原因?

这是我得到的错误:

Error: Error creating ELB: DuplicateLoadBalancerName: Load Balancer named myELB already exists and it is configured with different parameters. status code: 400, request id: 123456789-67b1-4fbd-95e3-17f693cdcf75

这里是 ELB 代码:

# Create ELB
resource "aws_elb" "myELB" {
   depends_on = [
      aws_instance.webservers,
    ]
  for_each = toset(var.public_subnets_names)

  name = "myELB"
  subnets = [data.aws_subnet.public_subnet_ids[each.value].id]

  listener {
    instance_port = 80
    instance_protocol = "http"
    lb_port = 80
    lb_protocol = "http"
  }

  health_check {
    healthy_threshold = 2
    unhealthy_threshold = 2
    timeout = 3
    target = "HTTP:8080/"
    interval = 30
  }

  instances = data.aws_instances.webservers.ids
  cross_zone_load_balancing = true
  idle_timeout = 400
  connection_draining = true
  connection_draining_timeout = 400

  tags = {
    Name = "myELB"
  }

}

这是数据源的样子:

# Get Public Subnets ID's
data "aws_subnet" "public_subnet_ids" {
  depends_on = [
    aws_subnet.subnets,
  ]

  for_each = toset(var.public_subnets_names)

  filter {
    name = "tag:Name"
    values = [each.value]
  }
}

【问题讨论】:

  • 更新了问题。运行命令terraform destroy 时ELB 不会删除。甚至在其他方面,只需运行命令 terraform apply 即可尝试重新创建
  • 所以您要创建多个 ALB,每个子网中一个?是故意的吗?

标签: amazon-web-services terraform amazon-elb


【解决方案1】:

发生这种情况是因为您正在创建多个 ALB,每个子网中都有一个同名 myALB。这是由于以下行:

for_each = toset(var.public_subnets_names)

不确定这是您的意图还是错误,因此不清楚您想要实现什么。

更新:

你通常只使用subnets:

subnets = data.aws_subnet_ids.subnets.ids

您将在哪里使用aws_subnet_ids 来获取子网的 ID。

【讨论】:

  • 所以 for_each 运行资源两次?我以为只计算两次运行资源。在这里,我想遍历var.public_subnets_names 并获取 ID 并插入子网。有什么更好的方法?我已经用数据源更新了问题。 var.public_subnets_names 是子网名称列表
  • 我没有使用 count 因为 count 会运行资源指定的次数。好像 for_each 也一样?
  • 也许使用 for 循环?
猜你喜欢
  • 1970-01-01
  • 2018-09-24
  • 1970-01-01
  • 2022-11-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-25
  • 2017-11-03
相关资源
最近更新 更多