跳至主要内容

文件和目录

文件扩展名

OpenTofu 语言中的代码存储在使用 .tf.tofu 文件扩展名的纯文本文件中。还有 基于 JSON 的语言变体,其名称为 .tf.json.tofu.json 文件扩展名。

包含 OpenTofu 代码的文件通常被称为 配置文件

扩展名优先级

当同一个目录中存在具有相同基本名称的 .tf.tofu 文件时,OpenTofu 将优先考虑 .tofu 文件,并忽略 .tf 文件。例如

  • 如果 foo.tffoo.tofu 同时存在于同一个目录中,OpenTofu 将只加载 foo.tofu 并忽略 foo.tf

这确保了当两种文件都可用时,.tofu 文件始终优先于 .tf 文件。对于希望其模块同时支持 OpenTofu 和 Terraform 的模块作者来说,这种情况很有用。

文本编码

配置文件必须始终使用 UTF-8 编码,并且按照惯例通常使用 Unix 风格的行结尾符 (LF),而不是 Windows 风格的行结尾符 (CRLF),尽管两种都接受。

目录和模块

一个 模块 是一个或多个 .tf.tf.json.tofu.tofu.json 文件的集合,它们保存在同一个目录中。

OpenTofu 模块只包含目录中的顶级配置文件;嵌套目录被视为完全独立的模块,不会自动包含在配置中。

OpenTofu 会评估模块中的所有配置文件,实际上将整个模块视为单个文档。将不同的块分离到不同的文件中只是为了方便读者和维护者,对模块的行为没有影响。

OpenTofu 模块可以使用 模块调用 将其他模块显式地包含到配置中。这些子模块可以来自本地目录(嵌套在父模块的目录中,或磁盘上的任何其他地方),也可以来自外部来源,例如 公共 OpenTofu 注册表

根模块

OpenTofu 始终在单个 根模块 的上下文中运行。一个完整的 OpenTofu 配置 由根模块和子模块树组成(包括根模块调用的模块、这些模块调用的任何模块,等等)。

  • 在 OpenTofu CLI 中,根模块是调用 OpenTofu 的工作目录。(您可以使用命令行选项指定工作目录之外的根模块,但在实践中这很少见。)
  • TACOS(TF 自动化和协作软件)中,工作区的根模块默认为配置目录的顶层(通过版本控制存储库或直接上传提供),但工作区设置可以指定要使用的一个子目录。