使用Terraform操作云VM时state文件范围及删除测试VM的最佳方案
Terraform state范围及测试VM删除操作解答
State文件包含范围
Terraform State仅跟踪当前Terraform项目明确管理的资源:你已部署的15台VM并未导入到该Terraform配置、也没有通过该Terraform项目执行过变更,因此Terraform完全感知不到这15台VM的存在。完成测试VM创建后,state文件仅包含这1台测试VM。
最佳操作选项说明
正确答案为 选项1,各选项的对错原因如下:
- 选项1:符合要求。
terraform destroy会精准销毁当前state中记录的、该Terraform项目管理的所有资源,也就是只会删除目标测试VM,不会影响另外15台非Terraform管理的VM,是符合IaC规范的标准操作。 - 选项2:操作错误。直接删除state文件只会丢失测试VM的跟踪记录,不会实际删除该VM,还会导致当前Terraform项目后续无法正常运行。
- 选项3:前提和操作都错误。首先state不会包含另外15台非Terraform管理的VM,即便假设16台VM都被纳入Terraform管理,执行
terraform destroy会删除所有16台VM,不符合仅删除测试VM的需求。 - 选项4:操作逻辑错误。手动在云控制台删除VM后,Terraform的state中仍有该VM的记录,执行
terraform apply会尝试重新创建该VM来匹配配置,完全违背删除需求。
内容的提问来源于stack exchange,提问作者Randy Shu
相关产品推荐
相关产品推荐

