🛠️

Terraform 1.11.0 のリリースを読んでみた

2025/03/03に公開

こんにちは、クラウドエース 第一開発部の阿部です。
この記事では、2025 年 2 月 27 日にリリースされた Terraform 1.11.0 の変更点についてざっくり説明します。

Terraform 1.11 のアップグレードに関する注意事項

既に Terraform 1.10.0 以降のバージョンを使用している場合は、特に注意事項はないようです。
ただし、 1.10.0 より以前のバージョンを使用している場合は、 Upgrading to Terraform v1.10 に記載されている注意事項を確認してからアップグレードしてください。
アップグレードの注意事項は、前回のブログ記事でも紹介しておりますので、あわせてご覧ください。

Terraform 1.11 の主な変更点

Terraform 1.11.0 の更新内容の詳細は Terraform 1.11.0 のリリースノート を参照してください。
下記は、リリースノートに記載されている主な変更点です。

新機能

  • write-only attributes (書き込み専用属性) がリソースに追加されました。Provider は特定の属性が書き込み専用であることを設定できます。書き込み専用属性は、State に保存されません。また、write-only attributes で Ephemeral value を使用できます。
  • terraform test コマンドで -junit-xml オプションが一般提供になりました。このオプションを使用すると、テストレポートを JUnit XML 形式で作成できます。
  • Terraform S3 バックエンドで、S3 ネイティブ機能による State ロックのための use_lockfile 引数が一般提供になりました。この変更の一環として、DynamoDB によるロック機能は非推奨になります。現時点では DynamoDB のロック機能と S3 ネイティブロック機能は併用できますが、新しいロック機能への移行が推奨されます。

機能強化

  • Provider インストールで、プロバイダーレジストリから返されたダウンロードと shasum の URL に対して、 .netrc で設定された認証情報が使用されるようになりました。
  • ユニットテスト実行中に、モックまたはオーバーライドされた値を使用できるようになりました。テスト設定で override_during = plan を設定すると、 plan フェーズ中にオーバーライドされた値が使用されます。デフォルトは override_during = apply です。
  • run ブロックに state_key 属性が追加され、テスト作成者は現在のテスト実行に使用する State ファイルを制御できます。
  • Terraform Azure バックエンドの認証が、terraform-provider-azurermprovider の認証と一致するようアップデートされました。いくつかの Go ライブラリのバージョンが上がったほか、Azure バックエンドの設定に以下の引数が追加されました。
    • use_cli
    • use_aks_workload_identity
    • client_id_file_path
    • client_certificate
    • client_id_file_path
    • client_secret_file_path
  • Terraform 公式 Docker イメージに ca-certificates パッケージが追加されました。これは、ダウンストリームによる証明書の処理をサポートするためです。

バグ修正

  • Ephemeral value が provisioner の出力に含まれているときのエラーメッセージが修正されました。
  • TF_VAR_ 環境変数を経由して (plan フェーズで保存した) 変数を apply 時に上書きする際に、誤解をまねくエラーメッセージが出力されましたが、代わりに警告メッセージに変更されました。
  • 値のインタラクティブプロンプト中に中断した場合にクラッシュすることがある問題が修正されました。
  • cloud バックエンドを使用している際に、-auto-approve を使用して保存された計画を適用すると発生することがあるハングアップの問題が修正されました。

まとめ

Terraform 1.11.0 のリリースノート紹介は以上です。
Terraform 1.10.0 のリリースノートに比べて変更点が少なめに感じました。
注目ポイントは write-only attributes だと思います。
この機能については、既に他の方による解説記事が公開されていますが、私も早めに試して解説記事を書きたいと思います。
(まだ Ephemeral resource についても整理しきれていないため、あわせて解説したいです。)
この記事が、Terraform ユーザーの方々にとって有益な情報となれば幸いです。

余談

本件の記事を書く際に、 NotebookLM を活用してみました。
といっても、記事の執筆自体に使用したというよりは、リリースノートの翻訳のチェック目的で補助的に使用したという感じです。
しかし、NotebookLM の翻訳精度は Google 翻訳と比べてかなり高いと感じ、今回のようなリリースノートをベースにした記事作成には非常に便利だと感じました。
というよりも、これまでやってきたリリースノート翻訳ベースの記事は、NotebookLM があれば不要になるのかもしれません。
私個人としても、エンジニアならではの技術記事を執筆するために生成 AI を活用していけたらと感じました。

Discussion