Вам это не нужно, если вас беспокоит только изменение файла состояния.
Если вы предоставите выходной файл плана для применения, а состояние изменилось с тех пор, Terraform выдаст ошибку перед выполнением каких-либо действий. изменения, жалуясь на то, что сохраненный план устарел.
Например:
$ cat <<'EOF' >> main.tf
> resource "random_pet" "bucket_suffix" {}
>
> resource "aws_s3_bucket" "example" {
> bucket = "example-${random_pet.bucket_suffix.id}"
> acl = "private"
>
> tags = {
> ThingToChange = "baz"
> }
> }
> EOF
$ terraform init
# ...
$ terraform apply
# ...
$ $ sed -i 's/foo/bar/' main.tf
$ terraform plan -out=plan
# ...
$ sed -i 's/bar/baz/' main.tf
$ terraform apply
# ...
$ terraform apply plan
Error: Saved plan is stale
The given plan file can no longer be applied because the state was changed by
another operation after the plan was created.
Чего он не сделает, так это того, что что-то за пределами Terraform ничего не изменит. Поэтому, если бы вместо применения Terraform снова с baz
в качестве тега для корзины, я изменил тег на корзине через CLI AWS или консоль AWS, тогда Terraform с радостью изменил бы его обратно на bar
при применении сустаревший план.