如何正确重置 Terraform 默认 tfstate?

And*_*mov 4 terraform devops infrastructure-as-code

最近,我开始在 Terraform 配置中使用每个环境的工作空间。我最终拥有了三个工作区:开发登台生产。但由于历史原因,我的默认工作区仍然包含过时的 tfstate。

将其“重置”为默认状态的正确方法是什么?就像里面什么都没有一样。

实现此目的的一种方法是terraform state rm为每个资源手动执行。但这样一来,我就会接到数百个这样的电话。有某种terraform state reset类似物吗?

MrJ*_*i2U 8

到目前为止,我知道的最简单的方法是创建一个新状态。

对于当地州...

删除本地状态文件

  • .terraform
  • terraform.lock.hcl
  • terraform.tfstate
  • terraform.tfstate.备份

并运行terraform init以创建一个新状态。

对于(AWS s3)远程状态...

更改后端存储“密钥”路径。例如...

terraform {
  backend "s3" {
    bucket = "terraform-storage"
    key    = "backends/stateX" ###...changed to "backends/stateY"
    region = "us-west-1"
  }
}
Run Code Online (Sandbox Code Playgroud)

...然后运行terraform init -reconfigure以创建新状态并将当前项目附加到该状态。然后,您可以使用任何方便的方法清理旧的远程状态文件。旧的状态文件不应干扰新的状态文件,但最佳实践是无论如何都要清理它们。

如果您安装了 AWS CLI,则可以使用一行命令清理旧状态文件...

aws s3api delete-object --bucket terraform-storage --key backends/stateX
Run Code Online (Sandbox Code Playgroud)