我正在从 Terraform 存储库中删除一项服务。 TF 计划检查失败,因为模块已被删除。
从 Terraform 存储库中停用服务的正确方法是什么。
从服务目录中删除所有文件。 删除失败。
在 Terraform 中停用服务时,遵循分步流程至关重要,以避免破坏 Terraform 状态和计划检查。本指南将引导您了解如何安全地删除资源,同时保持提供程序和后端配置完整,直到最后一步。
第 1 步:从 Terraform 配置中删除服务资源
首先,不要删除整个模块文件夹或 main.tf 文件。相反,请进入您要停用的服务的模块文件夹。
识别目录中特定于服务的资源(例如,aws_instance、aws_security_group 等)。
仅注释或删除要停用的服务的资源定义。
例如:
# resource "aws_instance" "example_service" {
# ami = "ami-12345678"
# instance_type = "t2.micro"
# ...
# }
第 2 步:运行 Terraform Plan 以验证更改
terraform plan
第 3 步:将更改提交到您的分支并打开 PR
第 4 步:让您的 PR 获得批准并部署更改
第 5 步:清理后端配置和工作区(如果适用)
为什么要保留提供者和后端配置到现在? 后端配置是 Terraform 如何知道在哪里存储基础设施状态的方式。如果过早删除后端配置,Terraform 将失去对状态文件的访问权限,并且无法跟踪哪些资源仍然存在或需要销毁。这可能会导致 Terraform 无法再管理孤立资源,从而增加基础设施漂移的风险。
提供商配置对于与您的云资源进行通信是必需的。过早删除它会破坏 Terraform 连接到云提供商的能力,从而阻止其正确销毁现有资源。
现在所有资源已被销毁,您可以继续删除提供程序和后端配置。
创建一个新分支(或使用现有分支)。
假设您之前已删除所有资源文件,只留下提供程序和后端配置,您可以继续从目录中删除这些文件以及目录本身。如果此目录具有为 Terraform Cloud 定义的工作区,您也可以继续删除该工作区。
将更改提交到您的分支并打开 PR。
让您的 PR 获得批准并合并更改。
总结 通过执行这些步骤,您将确保正确停用服务,而不会破坏 Terraform 状态或计划检查。始终记住保持提供程序和后端配置到位,直到资源完全销毁。过早删除这些配置可能会导致 Terraform 无法访问状态文件,从而导致孤立资源和基础设施漂移,以后清理起来可能会很困难。