【发布时间】:2022-01-18 06:36:31
【问题描述】:
我正在使用 terraform 创建基础设施。我决定将它模块化。但是在模块化和使用 terraform plan 之后,我可以看到我的 Plan:28 添加,0 更改,28 销毁。
如果我将现有结构更改为模块化,terraform 会摧毁一切吗?有什么办法不删除infra
【问题讨论】:
我正在使用 terraform 创建基础设施。我决定将它模块化。但是在模块化和使用 terraform plan 之后,我可以看到我的 Plan:28 添加,0 更改,28 销毁。
如果我将现有结构更改为模块化,terraform 会摧毁一切吗?有什么办法不删除infra
【问题讨论】:
由于您决定将基础架构代码拆分为多个模块,因此 terraform 会将您的资源视为新资源,因为它们的位置确实发生了变化。
将资源块从一个模块移动到多个子模块会导致 Terraform 将新位置视为完全不同的资源。
文档:https://www.terraform.io/language/modules/syntax#transferring-resource-state-into-modules
您现在可以通过多种方式继续:
一个。您可以使用 Terraform 的 refactoring 功能(从 1.1 版开始提供):https://www.terraform.io/language/modules/develop/refactoring 并利用 moved 块将旧资源映射到新资源。
b.您可以从干净的 terraform 状态开始,手动将资源从您的实际基础架构导入到状态 (https://www.terraform.io/cli/import)(您需要为所有 28 个资源执行此操作)
但如果是您的新项目,最简单的方法是从头开始重新创建资源(当然,如果它不是包含重要数据的生产环境)
【讨论】: