2016-11-04 5 views
1

最初にインスタンスが1つしかないASGを作成したいとします。ELBと自動スケーリンググループを組み合わせたときのTerraformのサイクルエラー

このASGのすべてのインスタンスをELBの背後に置いて欲しいです。

load_balancers = ["${aws_elb.Production-Web-ELB.name}"]resource "aws_autoscaling_group" "ProductionWeb-ScalingGroup"に設定しました。

さて、私は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の背後にあるでしょうか?

私が紛失したドキュメントには何かがありますか?

回避策はありますか?

答えて

2

terraformのELB定義でELBに関連付けられるインスタンスを明示的に定義する必要はありません。 load_balancers引数を使用すると、ELBをAutoScalingグループに関連付けることになり、自動スケーリンググループがそのインスタンスを起動するときに、自動スケーリングはそのELBに作成されたインスタンスをアタッチすることを認識します。

この場合、Terraformはインスタンスの状態を直接管理していません。つまり、AWS自動スケーリングは、同様に起動構成を定義してAutoScalingグループに関連付ける以外に、その状態をテラフォームで定義する必要はありません。

単一インスタンスでAutoScalingグループを起動するようにterratformに指示するには、min_size引数を1に設定し、スケーリングポリシーでそこから必要な容量を処理させます。代わりにdesired_capacityを1に設定することもできますが、計画を適用するたびにdesired_capacityが1に設定されるため、terraformでその状態を管理することには注意が必要です。

+1

ありがとうアンソニー。それは理にかなっている。 「テラフォーム計画」はエラーを発生させません。私はそれを次の日に「適用」と確認します。 –

関連する問題