我正在使用Terraform和S3后端配置创建AWS基础设施。现在的问题是,有人删除了存储状态的S3存储桶,现在每次我运行terraform时,它都说资源已经存在而失败。旧的tfstate丢失,而新的tfstate没有有关现有资源的信息。 注意:我没有对AWS环境的写权限。我通过Jenkins CD管道触发terraform,因此无法手动修改基础结构或运行任何terraform命令。
是否可以使用tf文件清除现有资源或强制重新创建资源(如果已经存在)?这是我唯一可以更改的地方。
答案 0 :(得分:1)
您真的一团糟。您需要还原S3存储桶或新建一个存储桶,然后将代码指向该存储桶。 然后,您需要重新创建丢失的状态,或者删除通过Terraform创建的每个对象,然后重新开始。大多数对象都可以通过 Terraform import 命令导入现有对象。
这可能是一项巨大的任务。
您需要对存储桶进行写访问吗?仅当您还有状态文件时,Terraform刷新才有帮助。你不知道 如果您没有权限执行此操作,则可以放弃该权限或坚持获取足够的特权。
如果您无法在本地运行Terraform,那么您也在浪费时间。 祝你好运。
但是......
您不想再来这里。您如何删除/丢失存储桶? 您确实需要再也不会发生这种情况,因为 @ydaetskcoR 在存储桶上说了一些 MFA保护-一定要这样做,并向其中添加版本控制是一个非常好的主意。 另外,如果您还没有在存储桶中添加 DynamoDB锁定,那确实值得。
答案 1 :(得分:1)
如果您使用的是生产帐户,请遵循其他人的建议,不要手动处理帐户中的任何内容!
如果您刚开始使用 terraform 或 terragrunt 并且您正在尝试重置 terraform 状态:
terraform init
和 terraform plan
而不会再出现问题。