【发布时间】:2018-09-14 21:45:10
【问题描述】:
我使用本地机器上的 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 知道有 25 个资源需要销毁。您确定您的状态文件配置正确并且您没有查看错误的状态文件吗?
-
感谢@ydaetskcoR 的回复。我正在查看正确的状态文件。唯一的区别是,在我的 github 代码中,我使用 bash 脚本来创建 terraform 工作区,以便我可以通过为每个区域设置“aws-xyz/terraform.tfstate”来在多个区域中部署代码。我将 AWS_REGION=us-west-2 作为环境变量传递,在我的 s3 存储桶上,我手动创建了
us-west-2/aws-xyz文件夹并将 terraform.tfstate 上传到它。我也有 .terraform/environment 文件有us-west-2 -
如果我新创建了基础设施,我的状态文件工作正常,如果我在上面重新运行代码,那么我不会收到“添加”或“销毁”消息。只有当我尝试使用从本地机器复制的状态文件并在新的代码/文件夹结构中使用它时,“添加”或“销毁”才会出现。知道我做错了什么吗?任何指针将不胜感激..
标签: terraform terraform-provider-aws