1.6.18.6.1. rm

terraform state rm命令可以用来从状态文件中删除对象。该命令可以删除单个资源、多实例资源中特定实例、整个模块以及等等。

1.6.18.6.1.1. 用法

terraform state rm [options] ADDRESS...

从状态文件中删除一个或多个对象。

删除对象并非删除实际基础设施对象,而只是状态不再由Terraform管理,从状态文件中删除而已。举例来说,如果你从状态文件中删除一个AWS虚拟机,那么该虚拟机仍然会保持运行,只是运行terraform plan再也看不到该实例了。

从状态文件中删除对象有着广泛的用途。最常见的就是进行代码重构,不再管理某个资源(也许是转移到另一个项目管理了)。

只有当所有要删除的资源被删除成功状态文件才会保存。如果由于任何原因导致某个资源删除发生错误(比如语法错误),那么状态文件完全不会被修改。

该命令在进行任意修改之前会先生成一个备份文件。备份机制不可关闭。

该命令需要传递一个或多个待删除资源的资源地址。

可以使用如下可选参数:

  • -backup=path:写入备份文件的路径
  • -state=path:要操作的资源文件路径。如果没有该参数,则会使用当前Backend或是"terraform.tfstate"文件

1.6.18.6.1.1.1. 删除一个资源

$ terraform state rm 'packet_device.worker'

1.6.18.6.1.1.2. 删除一个模块

$ terraform state rm 'module.foo'

1.6.18.6.1.1.3. 删除一个模块内资源

$ terraform state rm 'module.foo.packet_device.worker'

1.6.18.6.1.1.4. 删除一个声明count的资源

$ terraform state rm 'packet_device.worker[0]'

1.6.18.6.1.1.5. 删除一个声明for_each的资源

Linux, MacOS, and Unix:

$ terraform state rm 'packet_device.worker["example"]'

PowerShell:

$ terraform state rm 'packet_device.worker[\"example\"]'

Windows命令行:

$ terraform state rm packet_device.worker[\"example\"]

results matching ""

    No results matching ""