在terraform中有条件地将负载平衡器添加到aws\U ecs\U服务

在terraform中有条件地将负载平衡器添加到aws\U ecs\U服务,terraform,terraform-provider-aws,terraform0.11,Terraform,Terraform Provider Aws,Terraform0.11,如何在terraform 0.11.7中有条件地向aws_ecs_服务资源添加额外的负载平衡器 三元技巧 在某些情况下,我可以使用三元组-例如,我只在定义的情况下添加一个额外的sg security_groups = ["${aws_security_group.host_type.id}", "${"" != var.additional_sg ? var.additional_sg : aws_security_group.host_

如何在terraform 0.11.7中有条件地向aws_ecs_服务资源添加额外的负载平衡器

三元技巧 在某些情况下,我可以使用三元组-例如,我只在定义的情况下添加一个额外的sg

security_groups = ["${aws_security_group.host_type.id}",
    "${"" != var.additional_sg ? var.additional_sg : aws_security_group.host_type.id}",
]
这将导致host_type.id、additiona_sg或host_type.id、host_type.id。对于某一类参数,它工作得相当好

附加LB问题 在本例中,我有两类服务,有些需要向多个LB注册,有些不需要。因为这是一个新的需求,我不想切换到一个新的模块,因为这将强制销毁/重新创建一个部署成本更高的模块。理想情况下,我希望TF在适当的位置进行修改

resource "aws_ecs_service" "default" {
  name = "${var.service_name}"
  cluster = "${var.ecs_cluster_arn}"
  ...
  load_balancer {
    container_port = "${var.container_port}"
    container_name = "${var.env_name}-${var.service_name}"
    target_group_arn = "${var.lb_target_group_arn}"
  }

  load_balancer {
    container_port = "${var.internal_container_port}"
    container_name = "${var.env_name}-${var.service_name}"
    target_group_arn = "${var.internal_lb_target_group_arn}"
  }

  ...
}

我想不可能升级到0.12或0.13?我已经在你的问题中添加了
terraform0.11
标签。如果您可以接受Terraform 0.12或更高版本的答案,那么可能值得编辑您的问题,以删除0.11上的要求以及我刚才添加的标记。此外,对于您的2个要求,也没有一个好的解决方案。如果您可以升级到Terraform 0.12,那么您可以使用
动态
块来拥有多个负载平衡器。如果没有,则需要有条件地选择不同的
aws\u ecs\u服务
资源和不同数量的负载平衡器。此更改意味着需要使用不同资源的服务将需要重新创建或移动状态以匹配它。你基本上需要选择哪个更容易采用。我强烈建议升级到Terraform 0.12。当您稍后移动到Terraform 0.12并允许您重构以使用
动态
块时,现在添加额外的条件资源并移动状态以防止销毁和重新创建的战术更改必须撤消,您可以在这里做两倍的工作,也可以迁移到Terraform 0.12。升级到0.12是计划中的,但在这里不是一个选项。看来我需要做州立手术了