命令:state push
tofu state push
命令用于手动将本地状态文件上传到 远程状态。此命令还适用于本地状态。
此命令应很少使用。它仅作为在远程状态需要手动干预时使用的实用工具。
用法
用法:tofu state push [选项] PATH
此命令将 PATH 指定的状态推送到当前配置的 后端。
如果 PATH 为 "-",则要推送到标准输出的状态数据将从标准输入读取。此数据将完全加载到内存中并在写入目标状态之前进行验证。
OpenTofu 状态文件必须使用 UTF-8 格式且不带字节顺序标记 (BOM)。对于 Windows 上的 PowerShell,请使用 Set-Content
自动将文件编码为 UTF-8 格式。例如,运行 tofu state push | sc terraform.tfstate
。
OpenTofu 将执行多项安全检查以防止您进行看似不安全的更改。
-
**不同的血统**:如果状态中的“血统”值不同,OpenTofu 将不允许您推送状态。不同的血统表明状态完全不同,您可能会丢失数据。
-
**更高的远程序列号**:如果目标状态中的“序列号”值高于要推送的状态,OpenTofu 将阻止推送。更高的序列号表明目标状态中存在本地状态中未记录的数据。
可以使用 -force
标志禁用这两项安全检查。**不建议这样做。**如果禁用安全检查并推送状态,目标状态将被覆盖。
对于使用 cloud
后端 或 remote
后端 的配置,tofu state push
还接受选项 -ignore-remote-version
。
此命令还接受以下选项以进行 tofu state push
-
-lock=false
- 在操作期间不要保持状态锁。如果其他人可能同时对同一个工作区运行命令,这很危险。 -
-lock-timeout=DURATION
- 除非使用-lock=false
禁用锁定,否则指示 OpenTofu 在返回错误之前尝试获取锁一段时间。持续时间语法是数字后跟一个时间单位字母,例如 “3s” 表示三秒。 -
-var 'NAME=VALUE'
- 为配置根模块中声明的单个 输入变量 设置值。多次使用此选项以设置多个变量。有关更多信息,请参阅 命令行上的输入变量。 -
-var-file=FILENAME
- 使用 “tfvars” 文件 中的定义,为配置根模块中声明的许多 输入变量 设置值。多次使用此选项以包含多个文件中的值。
除了 -var
和 -var-file
选项之外,还有几种其他方法可以为根模块中的输入变量设置值。有关更多信息,请参阅 为根模块变量分配值。