- はじめに
- OpenTofu 1.6.x/1.7.x からのアップグレード
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の初期化
以下の手順のいずれかが失敗した場合は、続行せず、代わりに下記のロールバック手順に従ってください。OpenTofuのバグが原因であると思われる場合は、問題を報告してご協力ください。
これで移行の準備ができました。コードが存在するディレクトリで`tofu init`を実行します。OpenTofuは、OpenTofuレジストリから設定で参照されているプロバイダとモジュールをダウンロードします。
S3バックエンドを使用している場合 - バックエンドを再初期化するには、`tofu init -reconfigure`を実行する必要があります。
ステップ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にロールバックできます。
- 状態ファイルのバックアップをもう一つ作成してください。
- OpenTofu 1.8.xを削除し、OpenTofu 1.6.x/1.7.xが実行されていることを確認してください。
tofu init
を実行してください。tofu plan
を実行し、予期しない変更が計画に含まれていないことを確認してください。- 小さな、重要な影響のない変更でロールバックをテストしてください。
バグが発生した場合は、GitHubで報告してください。
トラブルシューティング
OpenTofuへの移行中に問題が発生した場合は、OpenTofu Slackに参加するか、GitHub Discussionsで質問してください。
エラー:利用可能なプロバイダパッケージのクエリに失敗しました
このエラーは、設定で指定したプロバイダがOpenTofuレジストリで使用できない場合に発生します。OpenTofu 1.6.x/1.7.xにロールバックし、コードがそのバージョンで動作することを確認してください。コードが動作する場合は、レジストリにプロバイダを含めるための問題を提出してください。
エラー:モジュールが見つかりません
このエラーは、設定で指定したモジュールがOpenTofuレジストリで使用できない場合に発生します。OpenTofu 1.6.x/1.7.xにロールバックし、コードがそのバージョンで動作することを確認してください。コードが動作する場合は、レジストリにモジュールを含めるための問題を提出してください。