Terraform - 从本地状态文件中删除资源
Terraform - Removing a resource from local state file
为了创建新的 Terraform 状态文件,我将一些旧的 Azure 资源导入到具有本地状态文件的 Terraform 配置中。正如预期的那样,我的导入语法如下:
terraform import <Terraform Resource Name>.<Resource Label> <Azure Resource ID>
不幸的是,对于我的一个资源,我使用了错误的资源标签,不得不重命名它。然后我执行了一个 Terraform 计划,但是由于之前的资源标签已经写入状态文件,该计划现在显示的消息是资源将在应用时被销毁。需要澄清的是,具有更正资源标签的资源也被写入状态文件,因此它不会在 Azure 中被破坏。
但是我想通过删除孤立资源来清理本地状态文件,所以当我 运行 Terraform 计划时,它报告说:
"No changes. Your infrastructure matches the configuration"
如何在不损害我的状态文件或遗留资源的情况下安全地执行此操作?
正如@luk2302 所建议的那样,我在将 keyvault 资源导入本地状态文件后在我的环境中测试了该命令,然后尝试仅从 terraform 状态中删除 keyvault 资源并且它成功了。
资源仅从状态文件中删除,仍然可以在门户中找到。
参考:
为了创建新的 Terraform 状态文件,我将一些旧的 Azure 资源导入到具有本地状态文件的 Terraform 配置中。正如预期的那样,我的导入语法如下:
terraform import <Terraform Resource Name>.<Resource Label> <Azure Resource ID>
不幸的是,对于我的一个资源,我使用了错误的资源标签,不得不重命名它。然后我执行了一个 Terraform 计划,但是由于之前的资源标签已经写入状态文件,该计划现在显示的消息是资源将在应用时被销毁。需要澄清的是,具有更正资源标签的资源也被写入状态文件,因此它不会在 Azure 中被破坏。
但是我想通过删除孤立资源来清理本地状态文件,所以当我 运行 Terraform 计划时,它报告说:
"No changes. Your infrastructure matches the configuration"
如何在不损害我的状态文件或遗留资源的情况下安全地执行此操作?
正如@luk2302 所建议的那样,我在将 keyvault 资源导入本地状态文件后在我的环境中测试了该命令,然后尝试仅从 terraform 状态中删除 keyvault 资源并且它成功了。
资源仅从状态文件中删除,仍然可以在门户中找到。
参考: