通常は、Terraform's lifecycle managementを使用して古いリソースを破壊する前に新しいリソースを作成することです。あなたが起動構成を設定し、このようなグループを自動スケーリング可能性がある。この場合
:あなたは別のAMIテラフォームを使用するami_id
変数を変更した場合
resource "aws_launch_configuration" "as_conf" {
name_prefix = "terraform-lc-example-"
image_id = "${var.ami_id}"
instance_type = "t1.micro"
lifecycle {
create_before_destroy = true
}
}
resource "aws_autoscaling_group" "bar" {
name = "terraform-asg-example-${aws_launch_configuration.as_conf.name}"
launch_configuration = "${aws_launch_configuration.as_conf.name}"
lifecycle {
create_before_destroy = true
}
}
は、それが起動設定を変更する必要が実現し、古いものを破壊する前に新しいものを作成してください。新しいLCによって生成された新しい名前は、ASG名で補間され、新しいASGが再構築されます。
create_before_destroy
Terraformは新しいLCとASGを作成し、古いASGを破棄して古いLCを破棄する前に、新しいASGが目的の容量(ヘルスチェックで設定可能)に達するのを待ちます。
これは、ASGのすべてのインスタンスを一度に反転します。したがって、ASGで最低2の容量があれば、2つのインスタンスが作成され、両方が正常性チェックに合格すると、2つの古いインスタンスが破棄されます。あなたがASGでELBを使用している場合は、2つの新しいインスタンスをELBに参加させるため、一時的に4つのインスタンスをすべて使用してから古い2を破棄します。
なぜあなたはASGを影響を受けない状態にしますか?この状況での通常の使用例は、ASGとその内部のインスタンスをローリング置換することです。 – ydaetskcoR
@ydaetskcoRはい、私が最終的に達成したいのは、それらを1つ1つ置き換えることです(それらを再スタックするか、ローリングを置き換える)。私が1つのインスタンスについて話したことは混乱しているので、質問を更新します。 – jckuester