- OpenTofu 语言
- OpenTofu 设置
OpenTofu 设置
特殊的 terraform
配置块类型用于配置 OpenTofu 本身的某些行为,例如要求最低的 OpenTofu 版本来应用您的配置。
作为 OpenTofu v1.x 兼容性承诺 的一部分,terraform
块保持原样。将来可能会引入 tofu
块,但现在还没有。
OpenTofu terraform
块语法
OpenTofu 设置收集在 terraform
块中
terraform {
# ...
}
每个 terraform
块可以包含许多与 OpenTofu 行为相关的设置。在 terraform
块中,只能使用常量值;参数不能引用命名对象(如资源、输入变量等),也不能使用任何 OpenTofu 语言内置函数。
以下部分将介绍 terraform
块中支持的各种选项。
配置 OpenTofu 后端
嵌套的 backend
块配置 OpenTofu 应该使用哪个状态后端。
backend
块的语法和行为在 后端配置 中描述。
指定所需的 OpenTofu 版本
required_version
设置接受 版本约束字符串,该字符串指定哪些版本的 OpenTofu 可以与您的配置一起使用。
如果正在运行的 OpenTofu 版本与指定的约束不匹配,OpenTofu 将产生错误并退出,不再执行任何其他操作。
当您使用 子模块 时,每个模块都可以指定自己的版本要求。树中所有模块的要求都必须满足。
在协作环境中使用 OpenTofu 版本约束,以确保每个人都在使用特定版本的 OpenTofu,或者至少使用配置所需的最低版本 OpenTofu。
required_version
设置仅适用于 OpenTofu CLI 的版本。OpenTofu 的资源类型由提供者插件实现,其发布周期独立于 OpenTofu CLI 以及彼此之间。使用 required_providers
块 来管理您使用的每个提供者的预期版本。
指定提供者要求
required_providers
块指定当前模块所需的所有提供者,将每个本地提供者名称映射到源地址和版本约束。
terraform {
required_providers {
aws = {
version = ">= 2.7.0"
source = "hashicorp/aws"
}
}
}
有关更多信息,请参阅 提供者要求。
实验性语言功能
OpenTofu 团队有时会通过选择性加入实验引入新的语言功能,以便社区可以在其成为向后兼容性约束之前尝试新功能并提供反馈。
在提供实验性功能的版本中,您可以通过在 tofu
块中设置 experiments
参数,在每个模块的基础上启用它们
terraform {
experiments = [example]
}
假设当前 OpenTofu 版本中提供了名为 example
的实验,则上述操作将选择加入该实验。
实验可能会在以后的版本中发生任意更改,并且,根据实验的结果,在最终发布之前可能会发生巨大变化,或者根本不会以稳定形式发布。即使在次要版本和修补程序版本中,也可能出现此类重大更改。我们不建议在用于生产用途的 OpenTofu 模块中使用实验性功能。
为了明确这一点,并避免模块调用者无意中依赖实验性功能,任何启用了实验的模块都会在每次 tofu plan
或 tofu apply
时生成警告。如果您想在共享模块中尝试实验性功能,我们建议只在模块的 alpha 或 beta 版本中启用实验。
实验的介绍和完成情况已记录在 OpenTofu 的变更日志 中,您可以查看其中的发布说明,了解特定 OpenTofu 版本中是否提供任何实验关键字。
将元数据传递给提供者
如果提供者定义了相应的模式,则 terraform
块可以为模块使用的每个提供者包含一个嵌套的 provider_meta
块。这允许提供者接收模块特定的信息,主要用于由与相关提供者相同的供应商分发的模块。
有关更多信息,请参见 提供者元数据。