OpenTofu, открытый инструмент для управления инфраструктурой как кодом, который сообщество развивает как альтернативу Terraform, получит встроенную поддержку линтинга. Первая экспериментальная версия войдёт в состав предстоящего релиза OpenTofu 1.13.

По словам разработчиков, во время планирования OpenTofu вычисляет выражения и обращается к провайдерам, чтобы понять, какие изменения ожидаются. Поэтому часть проверок можно выполнить только после получения этих дополнительных данных.

В версии 1.13 OpenTofu начнёт с небольшого набора возможностей. Попробовать раннюю экспериментальную версию линтинга можно с помощью новой опции командной строки -lint вместе с командами validate, plan и apply. Например: tofu plan -lint=all.

Значение all включает все доступные правила линтинга. Также можно перечислить конкретные проверки через запятую, чтобы включить только нужные.

В первой версии появятся четыре встроенных правила. core:no-type-variable находит входные переменные без объявленного типа. core:count-instead-enabled указывает, когда можно использовать более новую функцию enabled вместо старого подхода с условным count.

Два других правила ищут неиспользуемые элементы конфигурации. core:unused-variable находит входные переменные, которые объявлены, но нигде не используются. core:unused-local делает то же самое для локальных значений.

Параллельно команда строит более масштабные планы на будущее, не ограничиваясь встроенными проверками. OpenTofu прорабатывает возможность определения пользовательских правил линтинга и политик на языке, похожем на тот, что уже применяется в конфигурациях OpenTofu.

Более сложные проверки, вероятно, смогут работать с плагинами провайдеров. С их помощью правила смогут получать внешнюю информацию или выполнять проверки, которые сложно описать обычной конфигурацией.

Правила можно будет делать блокирующими или неблокирующими. Блокирующие правила останавливают операцию, а неблокирующие только выводят предупреждение. Команда также рассматривает переиспользуемые наборы правил, которые можно будет распространять так же, как модули OpenTofu.

Подробнее можно узнать в анонсе проекта OpenTofu.