- 命令行
- 初始化工作目录
初始化工作目录
OpenTofu 预计从包含使用 OpenTofu 语言 编写的配置文件的工作目录中被调用。OpenTofu 使用来自此目录的配置内容,并使用此目录来存储设置、缓存的插件和模块,有时还存储状态数据。
在 OpenTofu 可以在工作目录中执行任何操作(如配置基础设施或修改状态)之前,必须先初始化工作目录。
工作目录内容
OpenTofu 工作目录通常包含
- 一个 OpenTofu 配置,描述 OpenTofu 应该管理的资源。此配置预计会随着时间推移而改变。
- 一个隐藏的
.terraform
目录,OpenTofu 使用它来管理缓存的提供程序插件和模块,记录当前活动的工作区,并在下次运行时需要迁移状态时记录最后一个已知的后端配置。此目录由 OpenTofu 自动管理,并在初始化期间创建。 - 状态数据,如果配置使用默认的
local
后端。这由 OpenTofu 在terraform.tfstate
文件(如果目录只使用默认工作区)或terraform.tfstate.d
目录(如果目录使用多个工作区)中管理。
初始化
运行 tofu init
命令以初始化包含 OpenTofu 配置的工作目录。初始化后,您将能够执行其他命令,如 tofu plan
和 tofu apply
。
如果您尝试在未先初始化的情况下运行依赖于初始化的命令,该命令将失败并显示错误,并解释您需要运行 init。
初始化执行几个任务以准备目录,包括访问配置的后端中的状态、下载和安装提供程序插件以及下载模块。在某些情况下(通常是在从一个后端更改为另一个后端时),它可能会要求用户提供指导或确认。
有关详细信息,请参阅 tofu init
命令。
重新初始化
对 OpenTofu 配置的某些类型的更改可能需要重新初始化,才能继续进行正常的操作。这包括对提供程序要求、模块源或版本约束以及后端配置的更改。
您可以通过再次运行 tofu init
来重新初始化目录。实际上,您可以随时重新初始化;init 命令是幂等的,如果不需要更改,将不会产生任何影响。
如果需要重新初始化,任何依赖于初始化的命令都将失败并显示错误,并告知您。
仅重新初始化模块
tofu get
命令将下载配置中引用的模块,但不会执行其他必要的初始化任务。此命令仅适用于利基工作流,大多数 OpenTofu 用户可以忽略它,而使用 tofu init
。