跳至主要内容

后端类型: local

类型: 增强

local 后端将状态存储在本地文件系统上,使用系统 API 锁定该状态,并在本地执行操作。

示例配置

代码块
terraform {
backend "local" {
path = "relative/path/to/terraform.tfstate"
}
}

数据源配置

代码块
data "terraform_remote_state" "foo" {
backend = "local"

config = {
path = "${path.module}/../../terraform.tfstate"
}
}

配置变量

支持以下配置选项

  • path - (可选) tfstate 文件的路径。默认情况下,它默认为根模块相对于 "terraform.tfstate" 的路径。
  • workspace_dir - (可选) 非默认工作空间的路径。

命令行参数

对于包含 backend "local" 块或默认情况下不指定后端而默认使用 local 后端的配置,大多数读取或写入后端状态快照的命令都接受以下附加参数

  • -state=FILENAME - 在读取先前状态快照时覆盖状态文件名。

  • -state-out=FILENAME - 在写入新的状态快照时覆盖状态文件名。

    如果您使用 -state 但没有使用 -state-out,则 OpenTofu 将使用 -state 文件名作为 -state-state-out 的文件名,这意味着如果 OpenTofu 创建新的状态快照,它将覆盖输入文件。

  • -backup=FILENAME - 覆盖 local 后端在写入新状态时通常会动态选择以创建备份文件的默认文件名。

    如果您使用 -state 但没有使用 -backup,则 OpenTofu 将使用 -state 文件名作为生成备份文件名的文件名前缀。您可以使用 -backup=-(即,将文件名设置为仅 ASCII 连字符)完全禁用创建备份文件。

这三个选项是为了与早期工作流(在引入内置远程状态之前)向后兼容而保留的,在这些工作流中,用户会编写包装脚本在运行 OpenTofu 之前获取先前状态,然后在 OpenTofu 退出后保存新状态,在这种情况下,这三个参数通常都是用于单个操作的临时目录中的路径。

由于这些旧工作流是在引入可能存在 多个工作空间 的可能性之前创建的,因此设置它们会覆盖 OpenTofu 通常根据所选工作空间选择不同状态文件名的行为。如果您使用这三个选项,则所选工作空间不会影响 OpenTofu 为状态文件选择的文件名,因此,如果您希望将工作空间状态文件彼此区分开来,则需要自己选择不同的文件名。

这三个选项对选择了不同后端类型的配置没有影响。

我们不建议在新系统中使用这些选项,即使您在自动化中运行 OpenTofu。相反,选择支持远程状态的其他后端,并在根模块中对其进行配置,这确保所有使用您的配置工作的人员都将在正确的位置自动检索和存储状态,而无需任何特殊的命令行选项。