terraform tfstate未从远程s3存储桶刷新

时间:2018-09-11 09:32:05

标签: terraform terraform-provider-aws

我使用本地计算机上的tf代码部署了AWS基础设施,该代码将terraform.tfstate存储在我的计算机上。现在,我希望其他开发人员引用相同的状态文件,因此我将代码复制到github repo并添加了state.tf,并将terraform.tfstate从本地计算机复制到了状态文件指向的s3存储桶前缀。我还对存储库进行了一项更改,而不是将其分成一个大的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文件以进行读取,以至于他没有得到“添加”或“破坏”,因为没有对基础结构进行任何更改。

1 个答案:

答案 0 :(得分:0)

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

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

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