gpt4 book ai didi

amazon-web-services - 如何为常见的负载均衡器组织 terraform 模块

转载 作者:行者123 更新时间:2023-12-03 23:05:56 25 4
gpt4 key购买 nike

我有用于多个 EC2 实例的 AWS ALB。
在 Terraform 中,我有 alb 模块,它已经创建了负载均衡器和监听器,以及该 EC2 实例的目标组。
我想将 ec2 实例附加到目标组。我在 EC2 实例模块中执行此操作,该模块从负载均衡器模块输出中获取 ALB 实例 ID。
当我在 ec2 实例模块中执行 terraform apply 命令时,terraform 想要创建新的 ALB,但它已经创建并使用了。 ec2 模块中的 Terraform 状态不了解 ALB,但希望执行此模块中的代码以获取输出
如何在不为每个新 EC2 实例重新创建 ALB 的情况下为多个 EC2 实例使用通用 ALB 来组织模块?

最佳答案

你应该这样做的方式如下:

  • 在您的 output.tf 中为 ALB 创建一个模块output您希望 Ec2 实例使用的目标组
  • 为 EC2 创建一个模块,包括 aws_lb_target_group_attachment资源。添加 variable目标群体
  • 在您的 main.tf首先通过 ALB 模块创建负载均衡器,然后为您要使用的每个实例调用 EC2 模块,因为目标组参数引用目标组的 ALB 模块名称及其输出变量。

  • 一个例子 main.tf仅包括相关部分
    module "my_alb_module" {
    .....
    }

    module "my_ec2_module" {
    target_group_arn = module.my_alb_module.target_group
    }
    作为最佳实践,如果您有负载均衡器和 ec2 等组件,如果您想支持资源之间的可重用性,请尝试将它们保存在单独的模块中。
    虽然不是直接示例,但请查看 this GitHub repository 中的代码,它说明了如何在模块之间导出值。

    关于amazon-web-services - 如何为常见的负载均衡器组织 terraform 模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62742027/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com