1.7.18.1. state
terraform state
命令可以用来进行复杂的状态管理操作。随着你对 Terraform 的使用越来越深入,有时候你需要对状态文件进行一些修改。由于我们在状态管理章节中提到过的,状态文件的格式属于 HashiCorp 未公开的私有格式,所以直接修改状态文件是不适合的,我们可以使用 terraform state
命令来执行修改。
该命令含有数个子命令,我们会一一介绍。
1.7.18.1.1. 用法
terraform state <subcommand> [options] [args]
1.7.18.1.2. 远程状态
所有的 state
子命令都可以搭配本地状态文件以及远程状态使用。使用远程状态时读写操作可能用时稍长,因为读写都要通过网络完成。备份文件仍然会被写入本地磁盘。
1.7.18.1.3. 备份
所有会修改状态文件的 terraform state
子命令都会生成备份文件。可以通过 -backup
参数指定备份文件的位置。
只读子命令(例如 list
)由于不会修改状态,所以不会生成备份文件。
注意修改状态的 state
子命令无法禁用备份。由于状态文件的敏感性,Terraform 强制所有修改状态的子命令都必须生成备份文件。如果你不想保存备份,可以手动删除。
1.7.18.1.4. 命令行友好
state
子命令的输出以及命令结构都被设计得易于同 Unix 下其他命令行工具搭配使用,例如 grep、awk 等等。同样的,输出结果也可以在 Windows 上轻松使用 PowerShell 处理。
对于复杂场景,我们建议使用管道组合 state
子命令与其他命令行工具一同使用。
1.7.18.1.5. 资源地址
state
子命令中大量使用了资源地址,我们在资源地址章节中做了相关的介绍。