避免破坏先前创建的资源

Arb*_*zar 2 terraform

我想避免terraform破坏我之前创建的资源,而是创建新的资源。

我/想要使用这样的地形:

  • 创建AWS IAM组和策略
  • 将用户附加到这些组
  • 我想通过提供外部var文件来创建新的组和用户,就像我为上述用户和组所做的那样

但是,当我尝试传递新的var文件时,我创建了新资源并删除了前一个资源,因此我想创建一个新资源,但仍要保留旧资源,直到我提到要删除它为止。它。

这真的让我感到困惑,有人可以指出我如何实现这一目标吗?

提前致谢

str*_*gjz 5

预先进行地形状态管理很棘手,因此要小心。我已经成功销毁了其他资源,同时保留了一些资源。

用法:terraform状态rm [选项]地址...

该命令将删除与给定地址匹配的所有项目。

从Terraform状态移除的项目不会被物理破坏。从Terraform状态中删除的项目不再仅由Terraform管理。例如,如果您从状态中删除一个AWS实例,则该AWS实例将继续运行,但是terraform计划将不再看到该实例。

从Terraform状态文件中删除项目有多种用例。最常见的是重构配置以不再管理该资源(也许将其移动到另一个Terraform配置/状态)。

仅在成功删除所有地址后才能保存状态。如果由于任何原因出现任何特定的地址错误(例如语法错误),则将根本不会修改状态。

保存任何更改之前,此命令将输出状态的备份副本。无法禁用备份。由于此命令具有破坏性,因此需要备份。

terraform state rm resource_to_stay

terraform plan -destroy <-将进行销毁的“空转”,确保资源不存在

terraform destroy

terraform import resource_to_stay

terraform plan <-这应该具有导入资源的输出,请确保不会将其删除,也以红色显示。

terraform apply


Lia*_*iam 1

我认为 Terraform 不会那样工作。Terraform 的主要特点之一如下。

基础设施即代码:基础设施是使用高级配置语法来描述的。这允许对数据中心的蓝图进行版本控制并像处理任何其他代码一样进行处理。此外,基础设施可以共享和重复使用。

如果您开始在单个 Terraform 资源中存在多个“实际”资源,那么您就失去了基础设施的定义性质。这是 Terraform 资源...一种实际资源吗?五?十?你无法通过阅读代码来判断。

回到你的问题,我认为你有几个选择,但最终仍然会回到具体定义资源。你最好的选择,特别是如果你想减少样板文件,可能是模块