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