首页 > 解决方案 > terraform tfstate 未从远程 s3 存储桶刷新

问题描述

我使用本地机器上的 tf 代码部署了 AWS 基础设施,该机器将 terraform.tfstate 存储在我的机器上。现在我希望其他开发人员引用相同的状态文件,因此我将代码复制到 github repo 并添加了 state.tf 并将 terraform.tfstate 从我的本地机器复制到我的状态文件指向的 s3 存储桶前缀。我还在 repo 中进行了一项更改,而不是拥有一个大的 tf 文件,我将其分为三个文件 - state.tf、vpc.tf 和 dynamodb.tf。

我的 state.tf 文件:

terraform {
  backend "s3" {
   bucket = "testing-d-tf-state"
   key    = "aws-xyz/terraform.tfstate"
   region = "us-west-2"
  }
}

但是,当我的开发人员在他的机器上运行代码时,他得到了

计划:26 增加,0 改变,25 破坏。

我无法弄清楚为什么他没有正确刷新 terraform.tfstate 文件以读取以便他没有得到“添加”或“破坏”,因为没有对基础设施进行任何更改。

标签: terraformterraform-provider-aws

解决方案


您不应手动将terraform.tfstate文件复制到远程位置。编码完backend信息后,您将重新运行terraform init,Terraform 将负责在本地和远程存储桶中为您正确设置。

完成此操作后,您应该做一些事情来确认它是否有效:

  1. 登录 AWS 控制台并确认现在terraform.tfstate在正确的存储桶和位置中有一个文件。
  2. 移动本地terraform.tfstate文件(不要删除它以防万一),然后运行类似的东西terraform state list将查询状态文件。如果它有效,那么您的远程状态配置正在工作。

推荐阅读