メインコンテンツへスキップ

初期化と移行

作業ディレクトリのクラウドバックエンド設定を構成した後、tofu init を実行して設定を完了する必要があります。作業ディレクトリに既存の OpenTofu の状態がない場合は、クラウドバックエンドですぐに OpenTofu を使い始めることができます。

以下のシナリオで tofu init を実行すると、OpenTofu は既存のワークスペースから状態を移行するかどうかを選択するように求められます。

  1. ローカル状態または状態バックエンドからの移行: 作業ディレクトリにすでに 1 つ以上のワークスペースに状態データがある場合、OpenTofu はその状態を新しいクラウドバックエンドワークスペースに移行するかどうかを尋ねます。

  2. remoteバックエンドからの移行: 作業ディレクトリがすでに remote バックエンドでクラウドバックエンドに接続されていた場合、OpenTofu は同じクラウドバックエンドワークスペースを使い続けることができます。remote バックエンドブロックを cloud ブロックに切り替える必要があります。

ローカル状態または状態バックエンドからの移行

作業ディレクトリにすでに状態データがある場合 (ローカル状態または状態バックエンドを使用している場合)、OpenTofu はクラウドバックエンドにその状態を移行する許可を求めます。移行先のクラウドバックエンド組織でワークスペースを管理する権限が必要になります。このプロセスはインタラクティブで自己説明型であり、状態バックエンド間の移動に似ています。

また、OpenTofu は移行中にワークスペースの名前を変更するように求める場合があります。これは、名前のない default ワークスペースに名前を付けるため (クラウドバックエンドではすべてのワークスペースに名前が必要です)、またはワークスペース名にコンテキスト情報を追加するためです。OpenTofu CLI のみのワークスペースとは異なり、同じ構成に関連付けられた複数の環境 (本番、ステージング、開発など) を表しますが、クラウドバックエンドのワークスペースは完全に独立した構成を表すことができ、クラウドバックエンド組織内で一意の名前を持つ必要があります。

このため、OpenTofu は作業ディレクトリのワークスペースを既存の名前に関連したパターンに従って名前変更するように促します。これは、これらの特定のワークスペースが構成を共有しているという事実を示すことができます。一般的な戦略は <コンポーネント>-<環境>-<リージョン> (例:networking-prod-us-eastnetworking-staging-us-east) です。

remote バックエンドからの移行

作業ディレクトリがすでに remote バックエンドでクラウドバックエンドに接続されていた場合、OpenTofu は同じクラウドバックエンドワークスペースを使い続けることができます。これらのワークスペースに表示されるローカル名は、リモート名と一致するように変更されます。

remote バックエンドは、Terraform バージョン 0.11.13 から 1.0.x までのクラウドバックエンドの主要な実装でした。OpenTofu および Terraform バージョン 1.1 以降では、ネイティブの cloud 統合を使用することをお勧めします。これにより、ユーザーエクスペリエンスが向上し、さまざまな機能拡張が提供されます。

ブロックの置き換え

remote バックエンドから cloud ブロックに切り替える場合、OpenTofu は同じクラウドバックエンドワークスペースのセットを引き続き使用します。backend "remote" ブロックを同等の cloud ブロックに置き換えます。

単一ワークスペース

name 引数を使用して単一のワークスペースを使用していた場合は、ブロックラベルを cloud に変更します。

コードブロック
terraform {
- backend "remote" {
+ cloud {
organization = "my-org"

workspaces {
name = "my-app-prod"
}
}
}

複数ワークスペース

prefix 引数を使用して複数のワークスペースを使用していた場合は、tags 引数を使用する cloud ブロックに置き換えます。作業ディレクトリのワークスペースを区別するために任意の数のタグを指定できますが、まず以前のプレフィックスを使用するのが良いかもしれません。

構成するタグは、既存のワークスペースに存在する必要はありません。初期化時に、OpenTofuが必要に応じて指定されたタグをワークスペースに追加します。

コードブロック
terraform {
- backend "remote" {
+ cloud {
organization = "my-org"

workspaces {
- prefix = "my-app-"
+ tags = ["app:mine"]
}
}
}