terraform - 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 文件以读取以便他没有得到“添加”或“破坏”,因为没有对基础设施进行任何更改。
解决方案
您不应手动将terraform.tfstate
文件复制到远程位置。编码完backend
信息后,您将重新运行terraform init
,Terraform 将负责在本地和远程存储桶中为您正确设置。
完成此操作后,您应该做一些事情来确认它是否有效:
- 登录 AWS 控制台并确认现在
terraform.tfstate
在正确的存储桶和位置中有一个文件。 - 移动本地
terraform.tfstate
文件(不要删除它以防万一),然后运行类似的东西terraform state list
将查询状态文件。如果它有效,那么您的远程状态配置正在工作。
推荐阅读
- c# - 如何检查工作表是否包含特定的宏
- python - 如何修复描述对象潜在客户时出现的“simple_salesforce.exceptions.SalesforceResourceNotFound”错误?
- javascript - 变量在 jQuery 迭代期间只找到一次
- python - 如何在数据框中绘制具有三列的无向图,形成 3 种不同类型的节点(三方)?
- c# - 尝试使用 Azure DevOps REST API 向工作项发布讨论“评论”时出错
- javascript - 如何使用 React 中的单独按钮关闭“折叠”中打开的“面板”?
- opencv - Emgu.CV.InRange 返回黑色图像
- java - 在Java中,构造函数中最终的字段赋值涉及哪些操作?
- android - 如何使用 AppCompat 样式更改代码中的操作栏颜色?
- android - 如何在 Realm 中将 UnManaged 转换为 Managed List。我正在使用 Kotlin 和 MVVM for Android