更改规则主机名时,Terraform ALB错误“创建LB侦听器规则时出错:优先级X当前正在使用”

时间:2019-05-23 11:26:17

标签: terraform terraform-provider-aws

尝试更改现有ALB规则中的主机名时,总是会出现错误:

“创建LB侦听器规则时出错:PriorityInUse:当前正在使用优先级'40'”

尝试了here的推荐,但没有帮助。尝试不使用create_before_destroy,名称随机字符串等为TargetGroup指定名称。Terraform版本0.10.7,AWS提供程序1.54.0(也尝试过2.10.0)

在随后的Terraform应用中,将应用更改。

TF配置:

resource "aws_lb_listener_rule" "rule1" {
  depends_on = ["aws_lb_target_group.tg1"]
    lifecycle {
    create_before_destroy = true
  }
  listener_arn = "${aws_lb_listener.listener.arn}"
  priority = "40"
  action {
    type             = "forward"
  target_group_arn = "${aws_lb_target_group.tg1.id}"
  }
  condition {
    field  = "host-header"
    values = ["www.hostname.com"]
  }
  condition {
    field  = "path-pattern"
    values = ["/STATIC"]
  }
}



resource "aws_lb_target_group" "tg1" {
  lifecycle {
    create_before_destroy = true
  }
port = "443"
protocol = "HTTPS"
vpc_id   = "${var.vpc_id}"
health_check {
interval = "10"
path = "/"
  port= "443"
  protocol = "HTTPS"
  timeout = "9"
  healthy_threshold  = "5"
  unhealthy_threshold  = "3"
  }
  tags {
    Name = "${terraform.workspace}-service1"
   }
}

我希望一旦您在ALB规则中更改了主机名,Terraform就会毫无问题地处理该更改,但是看起来它正在尝试使用具有相同优先级号的新主机名重新创建ALB规则,因此失败了。再次运行terraform apply之后,它会进行更改。

可能存在一些变通办法来检查现有的ALB规则优先级名称并指定一个新的/不同的优先级名称,但这应由Terraform本地处理,否则我们将需要跟踪优先级编号以避免冲突。

有人有同样的问题并且以某种方式解决了吗?

谢谢。

1 个答案:

答案 0 :(得分:0)

事实证明,此问题是由于我配置新ALB规则资源的方式而发生的。每次我使用新的资源名称(rule2,rule3等)创建TF ALB规则资源时,都会与现有优先级编号冲突。因此,解决方案是在新资源中使用新的优先级编号,或者每次都使用相同的资源名称(规则1),在这种情况下Terraform会正确处理更改。