1.5.1. Terraform 文件与目录
Terraform 语言的代码存储在文件扩展名为 .tf
的纯文本文件中。该语言还有一种基于 JSON 的变体,以 .tf.json
文件扩展名命名(本书精力所限将不涉及这方面的内容)。
包含 Terraform 代码的文件通常称为配置文件。
1.5.1.1. 文本编码
配置文件必须始终使用 UTF-8 编码,并且按照惯例通常使用 Unix 样式行结束符 (LF),而不是 Windows 样式行结束符 (CRLF),尽管两者都被接受。
1.5.1.2. 文件夹与模块
同一个文件夹中一起保存的一组 .tf
以及 .tf.json
文件组成一个模块。
Terraform 模块仅由直接隶属于该目录的配置文件组成;子目录被视为完全独立的模块,并且不会自动包含在配置中。
Terraform 执行模块中的所有配置文件,最终将整个模块视为单个代码文件。将各个块分成不同的文件纯粹是为了方便读者和维护者,对模块的行为没有影响。
Terraform 模块可以使用模块调用将其他模块显式包含到配置中。这些子模块可以来自本地目录(嵌套在父模块的目录中,或磁盘上的任意其他位置),也可以来自 Terraform 注册表等外部源。
1.5.1.3. 根模块
Terraform 始终在单一的根模块的上下文中运行。完整的 Terraform 配置由根模块和子模块树组成(其中包括根模块调用的模块、以及由这些模块调用的任何模块等)。
- 在 Terraform 命令行 中,根模块是执行 Terraform 命令的工作目录。 (我们可以使用命令行参数来指定不同于当前工作目录的根模块,但实际上这种情况很少见。)
- 在 HCP Terraform 和 Terraform Enterprise 中,工作区的根模块默认为配置目录的顶层(通过版本控制存储库或直接上传提供),但工作区设置可以指定要使用的子目录。