结合 ELB 和 Auto Scaling Group 时 Terraform 中的循环错误
Cycle error in Terraform when combining ELB and Auto Scaling Group
我想创建一个最初只有 1 个实例的 ASG。
我希望这个 ASG 的所有实例都在一个 ELB 后面。
所以我在 resource "aws_autoscaling_group" "ProductionWeb-ScalingGroup"
中设置 load_balancers = ["${aws_elb.Production-Web-ELB.name}"]
.
现在,当我为 resource "aws_elb" "Production-Web-ELB"
编写代码并设置 instances = ["${aws_autoscaling_group.ProductionWeb-ScalingGroup.*.id}"]
时,出现错误...
Error configuring: 1 error(s) occurred:
* Cycle: aws_autoscaling_group.ProductionWeb-ScalingGroup, aws_elb.Production-Web-ELB
我理解这个错误意味着一个资源引用了另一个资源。为了检查它,我注释掉了 load_balancers = ["${aws_elb.Production-Web-ELB.name}"]
部分和 terraform plan
没有任何错误。
所以我的问题是:我是否无法使用 Terraform 创建带有附加 ELB 的 ASG,并且将在其中生成的每个 EC2 都会自动位于 ELB 后面?
文档中是否有我遗漏的内容?
有解决办法吗?
您不需要在 terraform 的 ELB 定义中明确定义将与 ELB 关联的实例。通过使用 load_balancers 参数,您将 ELB 与 AutoScaling 组相关联,AutoScaling 将知道在 AutoScaling 组启动该实例时将创建的任何实例附加到该 ELB。
在这种情况下,Terraform 不直接管理实例的状态——AWS AutoScaling 是,因此除了定义启动配置并将其关联到 AutoScaling 组之外,它们的状态同样不需要在 Terraform 中定义.
要告诉 terraform 使用单个实例启动 AutoScaling 组,请将您的 min_size argument to 1 and let your scaling policies handle the desired capacity from there. You could alternatively set desired_capacity 设置为 1,但要小心在 terraform 中管理该状态,因为它会将 desired_capacity 设置为 1应用计划的时间。
我想创建一个最初只有 1 个实例的 ASG。
我希望这个 ASG 的所有实例都在一个 ELB 后面。
所以我在 resource "aws_autoscaling_group" "ProductionWeb-ScalingGroup"
中设置 load_balancers = ["${aws_elb.Production-Web-ELB.name}"]
.
现在,当我为 resource "aws_elb" "Production-Web-ELB"
编写代码并设置 instances = ["${aws_autoscaling_group.ProductionWeb-ScalingGroup.*.id}"]
时,出现错误...
Error configuring: 1 error(s) occurred:
* Cycle: aws_autoscaling_group.ProductionWeb-ScalingGroup, aws_elb.Production-Web-ELB
我理解这个错误意味着一个资源引用了另一个资源。为了检查它,我注释掉了 load_balancers = ["${aws_elb.Production-Web-ELB.name}"]
部分和 terraform plan
没有任何错误。
所以我的问题是:我是否无法使用 Terraform 创建带有附加 ELB 的 ASG,并且将在其中生成的每个 EC2 都会自动位于 ELB 后面?
文档中是否有我遗漏的内容?
有解决办法吗?
您不需要在 terraform 的 ELB 定义中明确定义将与 ELB 关联的实例。通过使用 load_balancers 参数,您将 ELB 与 AutoScaling 组相关联,AutoScaling 将知道在 AutoScaling 组启动该实例时将创建的任何实例附加到该 ELB。
在这种情况下,Terraform 不直接管理实例的状态——AWS AutoScaling 是,因此除了定义启动配置并将其关联到 AutoScaling 组之外,它们的状态同样不需要在 Terraform 中定义.
要告诉 terraform 使用单个实例启动 AutoScaling 组,请将您的 min_size argument to 1 and let your scaling policies handle the desired capacity from there. You could alternatively set desired_capacity 设置为 1,但要小心在 terraform 中管理该状态,因为它会将 desired_capacity 设置为 1应用计划的时间。