Terraform 重命名状态文件

Bal*_*laB 11 terraform

当 .tfstate 持有资源时,如何重命名它?示例如下所示。

terraform {
  backend "s3" {
    bucket         = "px-terraform-state"
    region         = "ap-southeast-1"
    key            = "network/transaction-logs.tfstate"
    encrypt        = true
    dynamodb_table = "px-terraform-state"
  }
}
Run Code Online (Sandbox Code Playgroud)

terraform {
  backend "s3" {
    bucket         = "px-terraform-state"
    region         = "ap-southeast-1"
    key            = "network/sftp-logs.tfstate"
    encrypt        = true
    dynamodb_table = "px-terraform-state"
  }
}
Run Code Online (Sandbox Code Playgroud)

Mar*_*ins 16

为此有两个主要选项。

第一种方法是像在此处所做的那样更改配置,然后运行terraform init​​,此时 Terraform 应该自动将您的状态从旧位置迁移到新位置。如果您确认,Terraform 将从旧位置读取状态,将其写入新位置,然后删除旧位置。

另一种选择是直接将 S3 中的对象移动到新位置,然后按照所示更改配置,最后运行terraform init -reconfigure,其中该-reconfigure选项禁用我在上一段中描述的自动迁移行为,仅使用新配置作为直接迁移替换旧配置,完全忘记旧配置。一旦成功,您应该确保旧位置不再有状态快照,因为否则有人可能会在将来找到它并混淆哪一个是最新快照。