Проект OpenTofu выпустил версию 1.13 — очередное обновление популярного инструмента Infrastructure as Code (IaC), предназначенного для декларативного управления инфраструктурой. Новый релиз появился 29 сентября 2026 года и получил несколько заметных изменений: официальную поддержку Windows на процессорах ARM64, дополнительные функции для уменьшения количества неизвестных значений при выполнении tofu plan, экспериментальный механизм линтинга и первый вариант Symbol Libraries.
Несмотря на достаточно большое количество изменений, разработчики называют OpenTofu 1.13 относительно лёгким релизом. Цикл разработки был специально сокращён, чтобы приблизить график проекта к циклу выпусков Go и тем самым увеличить период, в течение которого ветка получает обновления безопасности. Согласно официальной информации OpenTofu, серия 1.13 будет поддерживаться до августа 2027 года.
Одновременно разработчики внесли несколько изменений, которые могут потребовать внимания при обновлении существующей инфраструктуры. В частности, окончательно удалена поддержка WinRM в provisioner-блоках, изменились результаты функции base64gzip, macOS теперь требует версию 13 Ventura или новее, а серия 1.13 становится последней официальной веткой OpenTofu с пакетами для 32-битных архитектур.
Что такое OpenTofu
OpenTofu — открытый инструмент для управления инфраструктурой по принципу Infrastructure as Code. Конфигурация инфраструктуры описывается в файлах, после чего OpenTofu анализирует её, сравнивает желаемое состояние с текущим состоянием ресурсов и формирует план изменений.
Такой подход позволяет описывать серверы, сетевые ресурсы, облачные сервисы, базы данных и другие компоненты инфраструктуры в виде кода. Конфигурацию можно хранить в Git, проверять в CI/CD, подвергать code review и воспроизводить в разных окружениях.
Рабочий процесс обычно состоит из нескольких этапов:
tofu initподготавливает рабочий каталог и загружает необходимые провайдеры и модули;tofu planпоказывает предполагаемые изменения инфраструктуры;tofu applyприменяет согласованные изменения;tofu destroyили соответствующие операции позволяют удалить управляемые ресурсы.
Одной из особенностей OpenTofu является стремление сохранять совместимость внутри ветки 1.x*. Проект отдельно документирует обещания совместимости для языка, CLI и протокола взаимодействия с провайдерами. При этом отдельные экспериментальные возможности не подпадают под такие гарантии и могут измениться в будущих версиях.
Главное нововведение — Windows ARM64
Одним из наиболее заметных изменений OpenTofu 1.13 стала официальная поддержка Windows на процессорах ARM64, также обозначаемых как AArch64. Теперь проект предоставляет официальные сборки OpenTofu для этой архитектуры.
Появление ARM64-сборки особенно актуально на фоне распространения Windows-устройств с ARM-процессорами. Для разработчиков и системных администраторов это означает возможность использовать OpenTofu непосредственно в нативной среде, не полагаясь на эмуляцию x86 или отдельную Linux-среду.
При этом существует важное ограничение. Поддержка ARM64 со стороны самого OpenTofu не означает автоматически, что абсолютно все провайдеры будут работать на этой платформе. Провайдеры представляют собой отдельные плагины, и их разработчики самостоятельно определяют список поддерживаемых операционных систем и архитектур.
По данным OpenTofu, многие провайдеры основных облачных платформ уже имеют варианты для windows_arm64, однако для некоторых сторонних провайдеров может потребоваться обновление. Отдельные проекты могут пока вообще не предоставлять ARM64-сборку.
Почему поддержка ARM64 важна для DevOps
В инфраструктурных командах операционная система рабочей станции обычно не должна ограничивать возможность запуска IaC-инструментов. Однако отсутствие нативного бинарного файла способно создавать дополнительные проблемы с производительностью, совместимостью и автоматизацией.
Нативная ARM64-сборка позволяет унифицировать рабочее окружение для пользователей Windows на ARM и использовать стандартный процесс установки и обновления OpenTofu.
Официальные сборки также упрощают автоматизацию. Администратору не приходится самостоятельно компилировать OpenTofu или искать сторонний бинарный пакет, если проект предоставляет готовый артефакт для нужной архитектуры.
OpenTofu 1.13 уменьшает количество unknown-значений
Второе важное направление изменений связано с командой tofu plan. Планирование — одна из ключевых частей IaC-процесса: до фактического изменения инфраструктуры OpenTofu пытается определить, какие ресурсы будут созданы, изменены или удалены.
Но во время планирования система не всегда может заранее узнать значение каждого атрибута. Некоторые значения становятся известны только после выполнения операции провайдером. В таком случае OpenTofu показывает в плане специальное состояние (known after apply).
Само по себе такое поведение нормально. Проблема возникает тогда, когда неизвестное значение начинает мешать дальнейшему анализу конфигурации.
Почему unknown-значения могут создавать проблемы
Некоторые конструкции OpenTofu требуют знания значения уже на этапе планирования. В официальной документации в качестве примеров приводятся такие метааргументы, как count, for_each и enabled.
Если значение неизвестно до выполнения apply, OpenTofu может оказаться не в состоянии определить точное количество ресурсов или понять, какие элементы коллекции должны быть созданы.
Проблема существует и в автоматизированных CI/CD-сценариях. Некоторые команды перед применением инфраструктуры передают машинно-читаемый план в системы проверки политик. Если значительная часть данных неизвестна, автоматическая система может оказаться перед неприятным выбором: разрешить потенциально опасное изменение или заблокировать изменение, которое в итоге могло бы оказаться полностью допустимым.
Поэтому уменьшение количества unknown-значений — не просто косметическое изменение вывода. Оно может повысить полезность планов для автоматизации и инфраструктурных проверок.
Новые функции convert и assume
OpenTofu 1.13 добавляет функции convert и группу функций assume..., предназначенных для того, чтобы авторы модулей могли сообщать системе дополнительную информацию о значениях, которые OpenTofu самостоятельно определить не способен.
Идея заключается в том, чтобы отделить реальную неизвестность от ситуации, когда разработчик модуля уже знает определённое свойство значения, но движок планирования не может вывести его автоматически.
В результате план может содержать меньше неопределённостей и становиться более информативным ещё до применения изменений.
Для крупных инфраструктурных проектов это особенно полезно. Чем больше модулей и зависимостей используется в конфигурации, тем больше вероятность того, что неизвестное значение одного ресурса окажет влияние на несколько последующих вычислений.
Экспериментальный встроенный линтинг
Ещё одно направление OpenTofu 1.13 — экспериментальная система встроенного линтинга. В текущей версии это только ранний этап разработки, поэтому воспринимать механизм как полноценную замену специализированным инструментам статического анализа пока не стоит.
Задача линтера заключается в поиске потенциальных проблем в конфигурации ещё до применения инфраструктуры. В перспективе такой механизм может проверять не только синтаксические особенности, но и определённые архитектурные правила, небезопасные конструкции и требования внутренних политик.
Для DevOps-процессов это особенно интересно, поскольку проверки можно будет постепенно переносить ближе к самому инструменту управления инфраструктурой.
Разработчики OpenTofu рассматривают линтинг как часть более широкого направления, в котором могут объединяться проверки конфигурации и механизмы policy enforcement. Но пока функциональность экспериментальная, поэтому использовать её как единственный барьер безопасности в production-инфраструктуре не рекомендуется.
Что такое Symbol Libraries
В OpenTofu 1.13 появился ещё один экспериментальный механизм — Symbol Libraries. Это концепция, которая отличается от обычных модулей.
Модуль обычно используется для повторного применения инфраструктурных компонентов: например, типовой виртуальной машины, сети, балансировщика или набора связанных ресурсов.
Symbol Library предполагает другой уровень повторного использования. В ней могут находиться общие значения, функции и определения типов, которые затем импортируются несколькими конфигурациями.
Такой подход потенциально может оказаться полезным в больших организациях, где несколько инфраструктурных проектов используют одинаковые типы данных, функции или константы.
Однако, как и в случае с экспериментальным линтингом, разработчики предупреждают о раннем статусе функции. Экспериментальные возможности могут измениться или быть полностью удалены в следующих версиях.
Удаление поддержки WinRM
При обновлении с предыдущих версий особое внимание стоит обратить на удаление WinRM из provisioner-механизмов remote-exec и file.
В OpenTofu 1.12 поддержка WinRM была объявлена устаревшей, а в версии 1.13 она полностью удалена. Если конфигурация содержит блок подключения с параметром type = "winrm", новая версия OpenTofu теперь отклонит такую конфигурацию с ошибкой.
Основной причиной удаления разработчики называют состояние используемых библиотек для работы с WinRM. Некоторые из них со временем перестали поддерживаться, поэтому дальнейшее сохранение этой функциональности стало проблематичным.
В качестве альтернативы OpenTofu рекомендует использовать OpenSSH для Windows.
Что делать пользователям старых конфигураций
Перед обновлением production-среды до OpenTofu 1.13 следует проверить инфраструктурный код на наличие WinRM-подключений.
В частности, стоит обратить внимание на:
- блоки
connectionсtype = "winrm"; - использование provisioner
remote-exec; - использование provisioner
fileсовместно с WinRM; - версии провайдеров и наличие для них Windows ARM64-сборок;
- скрипты CI/CD, которые предполагают конкретную архитектуру OpenTofu.
Такая предварительная проверка особенно важна в крупных инфраструктурах, где OpenTofu запускается автоматически после каждого изменения репозитория.
Последняя официальная ветка для 32-битных архитектур
OpenTofu 1.13 становится последней серией, для которой проект выпускает официальные сборки для 32-битных архитектур 386 и arm.
Начиная с будущей ветки 1.14, официальных пакетов для этих платформ не будет. Разработчики рекомендуют заранее перейти на 64-битную архитектуру, например amd64 или arm64.
Это не означает, что OpenTofu физически перестанет работать на 32-битных системах. Сторонние разработчики теоретически могут продолжать создавать собственные сборки. Однако такие пакеты уже не будут официальными артефактами проекта, а их качество и дальнейшее сопровождение будут зависеть от соответствующих сторон.
Изменения для пользователей macOS
Есть и ещё одно изменение платформенной поддержки. OpenTofu 1.13 требует macOS 13 Ventura или более новой версии.
Это означает, что пользователям старых версий macOS необходимо учитывать системные требования при обновлении OpenTofu. В средах, где рабочие станции используются исключительно как средства управления инфраструктурой, подобное ограничение может потребовать отдельного планирования обновления.
Изменение функции base64gzip
В версии 1.13 изменилось поведение функции base64gzip. Результат остаётся эквивалентным после распаковки, однако двоичное представление сжатых данных может отличаться от результата предыдущих версий.
На первый взгляд это не должно иметь значения, если данные используются только для последующей распаковки. Но инфраструктурный код иногда сравнивает именно бинарное представление или использует его для вычисления хешей, триггеров обновления и других зависимостей.
Поэтому после обновления желательно проверить ресурсы, где результат base64gzip участвует в сравнении или формировании конфигурации. В официальных release notes OpenTofu отдельно предупреждает, что изменение может привести к обновлению или замене некоторых ресурсов в зависимости от поведения соответствующего провайдера.
Как установить OpenTofu 1.13
Проект предоставляет несколько вариантов установки. Для Windows доступны, в частности, WinGet и Scoop, а также официальные пакеты из GitHub Releases.
Для установки через WinGet используется команда:
winget install --exact --id=OpenTofu.TofuПосле установки версию можно проверить командой:
tofu -versionОфициальная документация также описывает установку через Scoop и отдельные способы для Linux, macOS, FreeBSD, контейнеров и других окружений.
Стоит ли сразу обновлять production
OpenTofu 1.13 содержит несколько полезных изменений, но обновление production-среды лучше проводить после проверки существующей конфигурации.
Особенно внимательно необходимо отнестись к проектам, которые используют WinRM, работают на 32-битных системах или имеют сложные зависимости между провайдерами и модулями.
Для тестовой среды обновление можно выполнить отдельно, после чего запустить стандартный цикл:
tofu init
tofu validate
tofu planПолученный план следует сравнить с ожидаемым результатом. Если инфраструктура используется в CI/CD, желательно дополнительно проверить машинно-читаемый вывод и работу инструментов policy enforcement.
Значение OpenTofu 1.13 для IaC
OpenTofu 1.13 не является революционным релизом, однако он показывает несколько важных направлений развития проекта. Первое — расширение поддержки современных аппаратных платформ, включая Windows ARM64. Второе — улучшение качества планирования, поскольку для инфраструктурного кода важно не только применить изменение, но и заранее получить максимально точное представление о его последствиях.
Третье направление связано с переносом дополнительных проверок непосредственно в инструмент. Экспериментальный линтинг и Symbol Libraries пока находятся на ранней стадии, но в дальнейшем они могут расширить возможности OpenTofu как платформы для разработки и проверки инфраструктурного кода.
При этом проект постепенно избавляется от устаревших компонентов и платформ. Удаление WinRM, отказ от будущих официальных 32-битных сборок и повышение минимальной версии macOS показывают, что OpenTofu концентрируется на современных окружениях.
Выводы
OpenTofu 1.13 — это прежде всего релиз с улучшениями совместимости, планирования и инфраструктуры самого IaC-инструмента. Наиболее заметным изменением стала официальная поддержка Windows ARM64, однако для полноценной работы на этой платформе необходимо учитывать поддержку соответствующих архитектур со стороны провайдеров.
Новые функции convert и assume... должны помочь разработчикам модулей уменьшить количество неизвестных значений в результатах tofu plan. Это особенно важно для сложных конфигураций и автоматизированных систем проверки инфраструктуры.
Экспериментальные линтинг и Symbol Libraries пока не следует считать готовыми production-механизмами, но они показывают направление дальнейшего развития OpenTofu.
Одновременно перед обновлением необходимо проверить совместимость существующей инфраструктуры: WinRM больше не поддерживается в provisioner remote-exec и file, версия macOS должна быть не ниже 13 Ventura, а OpenTofu 1.13 является последней официальной веткой для 32-битных архитектур.
В целом версия 1.13 продолжает развитие OpenTofu как современного инструмента Infrastructure as Code, делая его удобнее для новых аппаратных платформ и постепенно расширяя возможности анализа конфигураций ещё до фактического изменения инфраструктуры.
Часто задаваемые вопросы
Основные нововведения — официальная поддержка Windows ARM64, функции для уменьшения unknown-значений при планировании, экспериментальный встроенный линтинг и первый вариант Symbol Libraries.
Да. Начиная с версии 1.13.0 проект предоставляет официальные сборки OpenTofu для Windows на ARM64. При этом отдельные провайдеры могут не иметь совместимых сборок.
Это значения, которые OpenTofu не может определить во время tofu plan и ожидает получить только после применения изменений. В выводе они обычно обозначаются как (known after apply).
Они позволяют авторам модулей сообщать OpenTofu дополнительную информацию о значениях и тем самым в некоторых сценариях уменьшать количество неопределённостей во время планирования.
Да. В OpenTofu 1.13 окончательно удалена поддержка WinRM для provisioner remote-exec и file. Для Windows рекомендуется использовать OpenSSH.
Официальных сборок для 32-битных архитектур 386 и arm в ветке 1.14 не планируется. Версия 1.13 является последней официальной серией с такими сборками.
Для OpenTofu 1.13 требуется macOS 13 Ventura или более новая версия.
Это экспериментальный механизм повторного использования значений, функций и определений типов между конфигурациями. Он отличается от обычных модулей, которые в первую очередь предназначены для повторного использования инфраструктурных ресурсов.
OpenTofu 1.13 содержит только раннюю экспериментальную реализацию. Поэтому не стоит рассматривать её как единственный механизм проверки production-конфигураций, особенно пока API и набор правил ещё развиваются.
Дополнительная информация и первоисточники
- Linuxiac — OpenTofu 1.13: Windows ARM64 и улучшенное планирование
- OpenTofu — официальный анонс OpenTofu v1.13.0
- GitHub — OpenTofu v1.13.0 Release
- OpenTofu — официальная документация по установке
- OpenTofu — установка в Windows
- OpenTofu — обещания совместимости ветки v1.x*
