← Все новости

OpenTofu 1.13: меньше unknown на этапе plan, линтер и Symbol LibrariesOpenTofu 1.13: fewer unknowns at plan time, a linter and Symbol Libraries

Новая версия открытого форка Terraform позволяет авторам модулей подсказывать типы, чтобы count и for_each вычислялись уже на этапе plan. Патч 1.13.2 закрывает проблемы безопасности, включая фильтрацию скомпрометированных сертификатов eMudhra. Есть ломающие изменения.The open-source Terraform fork lets module authors provide type hints so count and for_each resolve at plan time. The 1.13.2 patch fixes security issues, including filtering the compromised eMudhra certificates. There are breaking changes.

Вышла серия OpenTofu 1.13, а 21 октября — патч 1.13.2 с исправлениями безопасности.

Главное в 1.13

  • convert и assumenotnull. Авторы модулей могут подсказать тип значения, которое ещё неизвестно на этапе plan. Благодаря этому ключи count и for_each вычисляются заранее — меньше «known after apply» и ошибок вида «Invalid for_each argument».
  • Экспериментальный линтер: -lint=all с правилами вроде core:unused-variable.
  • Symbol Libraries (опциональный эксперимент): общие функции и типы в файлах *.sym.hcl, которые можно переиспользовать между модулями.
  • Пакеты для Windows ARM64.

Ломающие изменения

  • WinRM удалён из провиженеров remote-exec и file.
  • Изменился вывод base64gzip — ресурсы, которые от него зависят, могут показать изменения в plan.
  • Нужна macOS 13 или новее.
  • 1.13 — последняя серия с официальными 32-битными сборками. Поддержка 1.13.x — до 1 августа 2027.

Патч 1.13.2

Исправляет чрезмерную нагрузку на CPU при tofu init против вредоносного HTTP/2-сервера, отфильтровывает скомпрометированные промежуточные сертификаты (история с eMudhra) и чинит применение сохранённых планов с Symbol Libraries.

Что делать

Перед обновлением прогнать tofu plan на ключевых стейтах и проверить изменения от base64gzip; если используется WinRM — сначала мигрировать на SSH или другой механизм.

The OpenTofu 1.13 series is out, followed on Oct 21 by the 1.13.2 patch with security fixes.

Highlights of 1.13

  • convert and assumenotnull. Module authors can hint the type of a value that is still unknown at plan time. This lets count and for_each keys resolve early — fewer “known after apply” values and “Invalid for_each argument” errors.
  • Experimental linter: -lint=all with rules such as core:unused-variable.
  • Symbol Libraries (opt-in experiment): shared functions and types in *.sym.hcl files reusable across modules.
  • Windows ARM64 packages.

Breaking changes

  • WinRM is removed from the remote-exec and file provisioners.
  • base64gzip output changes — resources depending on it may show diffs in plan.
  • macOS 13 or later is required.
  • 1.13 is the last series with official 32-bit builds. 1.13.x is supported until Aug 1, 2027.

The 1.13.2 patch

Fixes excessive CPU use during tofu init against a malicious HTTP/2 server, filters the compromised intermediate certificates (the eMudhra case), and fixes applying saved plans that use Symbol Libraries.

What to do

Before upgrading, run tofu plan on key states and check for base64gzip diffs; if you rely on WinRM, migrate to SSH or another mechanism first.

Источники