本文へスキップ

OpenTofu 1.6.x/1.7.x からのアップグレード

OpenTofu 1.8.xは、S3バックエンドにおける1つのマイナーな破壊的変更を除いて、OpenTofu 1.6.xと1.7.xとほぼ互換性があります。この移行ガイドでは、OpenTofuをバージョン1.8.0にアップグレードする手順を説明します。

ステップ0:ディザスタリカバリプランの準備

OpenTofu 1.8はバージョン1.6と1.7とほぼ互換性がありますが、事故を防ぐために必要な予防措置を講じる必要があります。最新かつ*テスト済みの*ディザスタリカバリプランがあることを確認してください。

ステップ1:S3バックエンドを使用している場合 - S3バックエンドの設定から`use_legacy_workflow`の使用を削除する

S3バックエンドを`use_legacy_workflow`設定で使用している場合、それを削除する必要があります。このフィールドはバージョン1.7.0で非推奨となり、デフォルトで`false`に変更されました。認証のレガシーワークフローはサポートされなくなりました。他のAWSツールとより一貫性のある新しい認証方法を使用してください。

ステップ2:OpenTofu 1.6.x/1.7.xですべての変更を適用する

続行する前に、`tofu apply`ですべての変更を適用してください。`tofu plan`を実行すると、計画された変更がないことが確認できます。保留中の変更がある状態でOpenTofuに切り替えることはできますが、推奨されません。

コードブロック
$ tofu plan

...

No changes. Your infrastructure matches the configuration.

OpenTofu has compared your real infrastructure against your
configuration and found no differences, so no changes are needed.

ステップ3:OpenTofu 1.8.xのインストール

まず、OpenTofu CLIツールのインストール手順に従ってください。`tofu`コマンドを正常に実行して正しいバージョンを受け取れるかテストしてください。

コードブロック
$ tofu --version
OpenTofu v1.8.0
on linux_amd64

ステップ4:状態ファイルのバックアップ

Terraformコードで`tofu`バイナリを使用する前に、状態ファイルのバックアップを作成してください。ローカル状態ファイルを使用している場合は、プロジェクトディレクトリにある`terraform.tfstate`ファイルのコピーを作成するだけです。

S3バケットなどのリモートバックエンドを使用している場合は、バックエンドのバックアップ手順に従い、復元手順を少なくとも一度実行してください。

ステップ5:OpenTofu 1.8.xの初期化

これで移行の準備ができました。コードが存在するディレクトリで`tofu init`を実行します。OpenTofuは、OpenTofuレジストリから設定で参照されているプロバイダとモジュールをダウンロードします。

ステップ6:プランの確認

初期化後、`tofu plan`を実行し、ステップ1と同様に保留中の変更がないことを確認します。プランに予期しない変更がある場合は、OpenTofu 1.6.x/1.7.xに戻って移行のトラブルシューティングを行います。(下記のトラブルシューティングセクションを参照してください。)

コードブロック
$ tofu plan

...

No changes. Your infrastructure matches the configuration.

OpenTofu has compared your real infrastructure against your
configuration and found no differences, so no changes are needed.

ステップ7:小さな変更を試す

OpenTofuで大規模な変更を行う前に、tofu apply を小さな、重要な影響のない変更でテストしてください。

ロールバックと問題の報告

OpenTofuへの移行に問題が発生した場合は、次の手順に従ってOpenTofu 1.6.x/1.7.xにロールバックできます。

  1. 状態ファイルのバックアップをもう一つ作成してください。
  2. OpenTofu 1.8.xを削除し、OpenTofu 1.6.x/1.7.xが実行されていることを確認してください。
  3. tofu init を実行してください。
  4. tofu plan を実行し、予期しない変更が計画に含まれていないことを確認してください。
  5. 小さな、重要な影響のない変更でロールバックをテストしてください。

バグが発生した場合は、GitHubで報告してください

トラブルシューティング

OpenTofuへの移行中に問題が発生した場合は、OpenTofu Slackに参加するか、GitHub Discussionsで質問してください。

エラー:利用可能なプロバイダパッケージのクエリに失敗しました

このエラーは、設定で指定したプロバイダがOpenTofuレジストリで使用できない場合に発生します。OpenTofu 1.6.x/1.7.xにロールバックし、コードがそのバージョンで動作することを確認してください。コードが動作する場合は、レジストリにプロバイダを含めるための問題を提出してください

エラー:モジュールが見つかりません

このエラーは、設定で指定したモジュールがOpenTofuレジストリで使用できない場合に発生します。OpenTofu 1.6.x/1.7.xにロールバックし、コードがそのバージョンで動作することを確認してください。コードが動作する場合は、レジストリにモジュールを含めるための問題を提出してください