在使用生命周期规则时,如何防止Terraform破坏实例?

时间:2020-09-15 14:06:54

标签: amazon-web-services terraform lifecycle

(地形版本:0.11.3)

我希望能够运行Terraform计划/应用程序而不必销毁实例并使用新的AMI。

在我的main.tf中,我有:

resource "aws_instance" "ec2-server" {
  ami = "${local.ami.id}"
  instance_type = "t2.medium"
  ....#blah

  lifecycle {
    ignore_changes = ["ami"]
  }

}

运行计划时,它表明terraform要使用新的ami重建实例。

output:
id: = "i-0123456abc" => <computed> (forces new resource)
ami = "ami-0123456" => "ami-987654abc" (forces new resource)
....

我该如何解决?

1 个答案:

答案 0 :(得分:0)

如果更改ami,将强制重新创建。这是预期的行为。

@ydaetskcoR(https://stackoverflow.com/users/2291321/ydaetskcor)在这里有非常详细的答案:

AWS on Terraform - How to avoid 'forces new resource'

您应该看一下他们在解释如何规避破坏(零停机时间)以及行为背后的原因。