移除资源时terraform apply与terraform destroy的区别是什么
你当前场景不需要同时执行两个命令,具体选择要结合你的Terraform工作目录管理的资源范围判断,两个命令在资源移除逻辑上的差异如下:
两个命令的移除逻辑差异
terraform apply(删除对应资源配置后执行)
- 核心逻辑:Terraform会对比当前工作目录下的
.tf配置、状态文件中记录的已存在资源,自动识别到你移除了RDS实例的配置定义,将该RDS实例标记为待销毁资源 - 影响范围:仅销毁已经从配置文件中删除的资源,其余仍在
.tf配置中定义的资源不会受到任何影响 - 适用场景:你的工作目录下还管理了其他需要保留的Terraform资源,仅需要删除单台RDS实例
- 操作步骤:
- 先执行
terraform plan确认输出的变更清单中,仅目标RDS实例被标记为销毁,无其他预期外的变更 - 确认无误后执行
terraform apply即可完成RDS实例的删除
- 先执行
terraform destroy
- 核心逻辑:忽略当前
.tf配置的内容,直接销毁状态文件中记录的所有由当前工作目录管理的Terraform资源 - 影响范围:所有该工作目录下Terraform纳管的资源都会被删除,风险极高
- 适用场景:你的工作目录下仅管理了这一台RDS实例,没有其他需要保留的资源
- 注意:如果需要用该命令仅删除RDS实例,可以补充target参数指定资源:
terraform destroy -target=aws_db_instance.你的RDS资源名,资源名可以通过terraform state list命令查询
最终建议
如果你的工作目录下还有其他需要保留的资源,不要直接执行terraform destroy,仅执行terraform apply即可;如果该目录下仅管理了这台RDS,执行任意一个命令都可以达到删除目的,无需两个都执行。
内容的提问来源于stack exchange,提问作者lipsum
相关产品推荐
相关产品推荐

