- OpenTofu 语言
- 文件和目录
文件和目录
文件扩展名
OpenTofu 语言中的代码存储在使用 .tf
或 .tofu
文件扩展名的纯文本文件中。还有 基于 JSON 的语言变体,其名称为 .tf.json
或 .tofu.json
文件扩展名。
包含 OpenTofu 代码的文件通常被称为 配置文件。
扩展名优先级
当同一个目录中存在具有相同基本名称的 .tf
和 .tofu
文件时,OpenTofu 将优先考虑 .tofu
文件,并忽略 .tf
文件。例如
- 如果
foo.tf
和foo.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 自动化和协作软件)中,工作区的根模块默认为配置目录的顶层(通过版本控制存储库或直接上传提供),但工作区设置可以指定要使用的一个子目录。