Terraform 1.13.0 のリリースを読んでみた (1.13.1 もあるよ)
こんにちは、クラウドエース 第一開発部の阿部です。
この記事では、2025 年 8 月 20 日にリリースされた Terraform 1.13.0 の変更点についてざっくり説明します。
また、2025 年 8 月 27 日にリリースされた Terraform 1.13.1 の変更点についても紹介します。
Terraform 1.13 のアップグレードに関する注意事項
アップグレードガイドにおいて、Terraform 1.12 から 1.13 にアップグレードする際の注意事項は特にありませんでした。
Terraform 1.13 にアップグレードする際の注意事項についての詳細は、Terraform 1.13 のアップグレードガイドを参照してください。
Terraform 1.13.0 の主な変更点
Terraform 1.13.0 の更新内容の詳細は、Terraform 1.13.0 のリリースノートを参照してください。
また、 Terraform 1.13.1 の更新内容は Terraform 1.13.1 のリリースノートを参照してください。
以下は、主な変更点の概要です。
新機能
- 新しいコマンドである
terraform stacks
が追加されました。利用可能なサブコマンドはプラグインの実装により異なります。terraform stacks -usage
で利用可能なサブコマンドを確認できます。
機能強化
- Filesystem 関数は、apply 実行中に無効なデータを検出するためのチェックが追加され、一貫性のある結果が得られるようになりました。
- プロバイダーのバージョン制約において、少なくとも 1 つの有効なバージョン制約と一致すれば init が成功するようになりました。
- カーディナリティが高いリソースの評価処理のパフォーマンスが改善されました。
-
terraform test
で、ティアダウン操作の並列実行が可能になりました。 -
terraform test
で、テスト作成者はテストファイル内で参照される外部変数の定義を、テストファイル内で直接指定できるようになりました。(執筆者注: variable ブロックを test ファイル内に書けるようになったという意味だと思います。) -
terraform test
におけるファイルレベル変数ブロックは他の出力や変数から参照できるようになりました。 - plan 実行時に、すでに比較済みの集合型の値については再度比較処理が行われなくなりました。
- 型チェック時の型不一致に関するエラーメッセージがより分かりやすく改善されました。
バグ修正
- 子モジュールに無視された
cloud
ブロックがある場合に、警告メッセージが出力されなかった問題を修正しました。 - ネストされたモジュールの
output
からsensitive
属性が失われる場合がある問題を修正しました。 -
terraform workspace
で、 "" (空文字列) を無効なワークスペース名として検証するようになりました。 -
terraform workspace delete
で、 "" (空文字列) を無効なワークスペース名として検証するようになりました。 - plan 時に関連する属性値から無効な属性や動的な属性値を切り捨てるようになりました。これは、
try
関数やcan
関数を使用している際に、無効な属性を plan 情報に含めないようにするためです。 - 並列数 1 のときの単体テストがデッドロックすることがある問題を修正しました。
- オブジェクトのインデックスを経由する無効な静的参照を検出するようになりました。
- 特定のケースでリソース ID が State から削除される問題を修正しました。
その他
-
terraform rpcapi
サブコマンドが一般提供になりました。これは広く利用されることを目的としていませんが、 go-plugin と互換性のある RPC インターフェースを通じて Terraform を操作する手段を公開します。
Terraform 1.13.1 の主な変更点
-
terraform test
で、テストが存在しない場合にゼロ以外の終了コードを返す問題を修正しました。 - 不完全な参照を解決しているときに、
terraform test
がクラッシュする問題を修正しました。
terraform stacks コマンドについて
Terraform Stacks は、 HCP Terraform (旧 Terraform Cloud) の機能の一つで、モジュールの再利用性と複数環境への効率よいデプロイを支援するための管理手法を提供します。
1.13.0 で導入された terraform stacks
コマンドは、残念ながら Terraform Stacks を CLI で提供するわけではなく、Terraform Stacks の実行環境を初期化・検証するための管理コマンドを提供するものです。
リリースノートでは、 terraform stacks -usage
で利用可能なサブコマンドを確認できると書かれています。実際に確認してみると、以下のように表示されました。
Usage: terraform stacks [global options] <command> [args]
The available commands for execution are listed below.
Primary Commands:
init Prepare the configuration directory for further commands
providers-lock Write out dependency locks for the configured providers
validate Check whether the configuration is valid
version Show the current Stacks Plugin version
fmt Reformat your Terraform Stacks configuration to a canonical format
Sub-commands:
Global options (use these before the subcommand, if any):
-chdir=DIR Switch to a different working directory before executing the
given subcommand.
-plugin-cache-dir=DIR Override the default directory where the stack plugin binary is cached.
-stacks-version An alias for the "version" subcommand.
-no-color=BOOL Disable color output. Must be explicitly set to true or false.
Usage help:
-usage Show this usage output or the usage for a specified subcommand.
Use after the command: terraform stacks <command> -usage
内容を確認した限りでは、 Terraform Stacks を実行するために手元の端末等で環境を初期化したり、構成ファイルの検証・整形を行うためのコマンドであることが分かります。
Terraform Stacks を説明していくと長くなってしまうのと、筆者が HCP Terraform を利用していないため、詳細な説明は割愛します。
いつか、Terraform Stacks についても記事を書けたらと思います。
terraform stacks コマンドについてもう少し調査
元々、Terraform Stacks の管理コマンドとして terraform-stacks-cli(tfstacks
) が提供されていました。
tfstacks
の方を確認してみると、現在は 1.0.0 が最新バージョンでした。ダウンロードして実行すると以下のようなメッセージが表示され、プラグイン用のバイナリであることが分かります。
This binary is a plugin. These are not meant to be executed directly.
Please execute the program that consumes these plugins, which will
load any plugins automatically
ちなみに、 0.6.1 の tfstacks
を実行すると以下のようにコマンドラインで直接実行できます。
Usage: tfstacks [--version] [--help] <command> [<args>]
Available commands are:
fmt Reformat your Terraform Stacks configuration to a canonical format
init Prepare the configuration directory for further commands
plan Plan configuration in the current directory
providers
validate Check whether the configuration is valid
よって、これまで tfstacks
として提供されてきたコマンドは、 terraform stacks
のプラグインとして提供されるようになったと考えられます。
(リリースノート等に詳細が書いていないので、あくまで筆者の推測です。)
その他の変更点について
terraform stacks
以外の変更点については、通常の Terraform 動作の改善や、Terraform Test に関連する改善・バグ修正がメインであり、特に注目すべき変更点はないと思いました。
まとめ
Terraform 1.13.0 では、 terraform stacks
コマンドが導入され、もしかして Terraform Stacks が CLI でも利用できるのかなと期待しましたが、実際には Terraform Stacks の実行環境を初期化・検証するための管理コマンドが提供されるのみでした。
また、その他の変更点としては、マイナーな変更にとどまると思います。
一方で、Terraform Test は細かいながら着実に改善されている印象を受けます。(例えば、変数の取り扱いの改善など。)
現状では業務で利用していませんが、改めて見直して活用を模索していきたいと考えています。
この記事が、Terraform を使っている方の参考になれば幸いです。
Discussion