InfoQ

OpenTofu 1.13 Lets Module Authors Reduce Unknown Values at Plan Time

6.9内容质量
OpenTofu 1.13 Lets Module Authors Reduce Unknown Values at Plan Time

TL;DR · AI 摘要

OpenTofu 1.13 Lets Module Authors Reduce Unknown Values at Plan Time - InfoQ InfoQ Homepage News OpenTofu 1.13 Lets Modu...

核心要点

  • 主题聚焦:OpenTofu 1.13 Lets Module Authors Reduce Unknown
  • 来源:InfoQ,建议结合原文判断细节。
  • AI 分析暂不可用,本条为保底评分与摘要。
#AI#编程#后端#云计算#安全
打开原文

OpenTofu 1.13 让模块作者在计划阶段减少未知值 - InfoQ

InfoQ 首页 News OpenTofu 1.13 让模块作者在计划阶段减少未知值

DevOps

InfoQ 认证高绩效团队计划(在线,11月17日):为您的团队构建更清晰的运营模型。

OpenTofu 1.13 让模块作者在计划阶段减少未知值

2026年10月26日 2分钟阅读

作者:

  • Mark Silvester

#### 关注我们

Youtube

232K 粉丝

Linkedin

26K 粉丝

Instagram

新

RSS

19K 读者

X

57.1k 粉丝

Facebook

21K 赞

Bluesky

收听本文 -

0:00

音频准备播放

您的浏览器不支持音频元素。

正常

1.25x

1.5x

喜欢

新下拉阅读列表

  • 阅读列表

OpenTofu 发布了 1.13 版本,新增功能帮助模块作者在规划阶段解析更多表达式。类型和值提示可以在 count 或 for_each 使用的键保持未知时解除计划阻塞。规划器无需知道所有资源实例的最终属性,即可确定要创建的实例数量,这些属性可能直到应用阶段才变为已知。

OpenTofu 维护者 Martin Atkins 在 RFC 中提出该设计,并于 8 月合并了实现。在更早的 issue 中,报告者 csar398 希望保留 YAML 输入,但当解码值控制 count 时无法进行规划。yamldecode 可返回包括 null 值在内的多种类型,因此未知输入既不提供已知类型,也无法保证非空。Atkins 解释该限制时写道:"... 这对 OpenTofu 来说太复杂,无法自动推断。"

convert 函数可将值转换为指定类型,即使 YAML 输入未知,也能为 yamldecode 结果赋予已知对象类型。对于条件资源,结合 assumenotnull 可让基于 null 性的 count 表达式解析为 0 或 1,同时对象内容保持未知。作者必须确保生成的 YAML 始终表示指定类型的对象,而非 null 值。如果规划阶段未知的值后续违反该保证,OpenTofu 在应用阶段会报错。

Terraform 最早在 1.15 版本中推出了等效的 convert 函数。Atkins 后来在 OpenTofu 的 issue 中写道:"Terraform 有等效功能,语法与我在此提议的完全相同",项目决定沿用其设计。

实验性代码检查功能包含四个内置警告规则,包括 core:unused-variable 和 core:count-instead-enabled。使用 -lint=all 标志可通过 tofu validate、tofu plan 或 tofu apply 启用这些规则。在代码检查提案中,维护者将该功能描述为最受欢迎的请求;后续工作将涵盖自定义规则和更广泛的策略检查。TFLint 已经提供基于插件的静态分析,包括云提供商检查。

可选加入的 Symbol Libraries 实验通过 *.sym.hcl 文件共享函数和类型定义。库无法直接访问资源、数据源或提供者函数,但调用者可将资源值传递给库函数。团队希望在 1.14 版本中稳定该功能。

版本 1.13 移除了远程执行和文件提供者对 Windows 远程管理 (WinRM) 的支持,修改了 base64gzip 输出字节,要求使用 macOS 13 Ventura 或更高版本,并且是最后一个提供官方 32 位构建版本的系列。该版本还新增了适用于 ARM64 的 Windows 包。现有 WinRM 配置需要迁移,而 base64gzip 背后的 Go 库变更可能导致资源更新,即使解压后的输出结果相同。

OpenTofu 缩短了开发周期以与 Go 发布周期保持一致,并将支持 1.13.x 系列直至 2027 年 8 月 1 日。该项目于 10 月 21 日发布了 1.13.2 版本。其两个安全更新解决了在连接到攻击者控制的 HTTP/2 服务器时 tofu init 过程中 CPU 使用率过高的问题,并过滤受污染的中间证书。该补丁还修复了应用使用符号库的保存计划时出现的错误。

main wrapper for authors section

关于作者

section title

main wrapper for each author

#### Mark Silvester

显示更多

显示更少

#### 本内容属于 DevOps 主题

##### 相关主题:

  • 开发
  • 架构与设计
  • DevOps
  • Terraform
  • 云原生计算基金会
  • 基础设施即代码
  • 相关编辑内容
  • 相关赞助商 AI 的物理限制:AI 如何重塑数据中心
  • 相关赞助商 PostgreSQL 专为时间序列规模而建 无需牺牲性能即可使用 PostgreSQL 处理海量时间序列数据。了解 Tiger Data 如何实现高速数据摄入、快速查询和可扩展存储。了解更多。

InfoQ 新闻通讯

每周五发送 InfoQ 最新内容摘要。加入超过 25 万名高级开发者的社区。查看示例

我们保护您的隐私。 /think