概要
OpenTofu 1.12.0が2026年5月14日にリリースされた。今回の目玉は、prevent_destroyライフサイクル引数を動的に設定できるようになったことで、これはTerraformのGitHubに2016年に起票されながらHashiCorpが一度も実装しなかった機能だ。コミュニティ主導のフォークとして誕生したOpenTofuが、商業的に管理されてきたTerraformを開発速度で上回っていることを象徴するリリースとなった。
動的prevent_destroyサポートの詳細
従来、prevent_destroyはハードコードが必須であり、本番環境と開発環境を同一のモジュールで管理しようとすると、すべての環境で同じライフサイクルルールが適用されるという制約があった。これを回避するにはモジュールを複製するしかなく、管理コストが増大していた。OpenTofu 1.12では、prevent_destroyに入力変数などの動的な値を参照できるようになり、環境ごとに異なるライフサイクルルールを単一のモジュールで適用できる。例えば本番環境ではprevent_destroy = true、開発環境ではprevent_destroy = falseといった設定を変数で切り替えることが可能になった。
その他の新機能と改善
プロバイダーチェックサムの改善により、tofu initの実行時にロックファイルへzh:とh1:両方のハッシュが自動で記録されるようになった。従来はtofu initでzh:ハッシュのみが書き込まれ、キャッシュやミラーに必要なh1:ハッシュを取得するために別途tofu providers lockコマンドを実行する必要があったが、この手間が不要になった。
-json-into=FILENAMEフラグが新たに追加され、機械可読なJSON出力を指定ファイルへ書き込みながら、端末には人間が読みやすい通常の出力を維持できるようになった。CI/CDパイプラインなどでのツール統合を容易にしつつ、オペレーターの可読性を損なわない改善だ。
また、destroy = falseメタ引数により、インフラを実際に削除することなくリソースをOpenTofuの管理状態から除外できるようになった。複数プロバイダーの依存関係がある場合のtofu initの並行インストール対応も行われ、初期化時間の短縮が図られている。
廃止予定
WinRMプロビジョナーは保守が行われていないGoライブラリへの依存を理由に非推奨となり、バージョン1.13での削除が予定されている。また、386およびARMの32ビットアーキテクチャのビルドも段階的に廃止される予定だ。