初期化と移行
作業ディレクトリのクラウドバックエンド設定を構成した後、tofu init
を実行して設定を完了する必要があります。作業ディレクトリに既存の OpenTofu の状態がない場合は、クラウドバックエンドですぐに OpenTofu を使い始めることができます。
以下のシナリオで tofu init
を実行すると、OpenTofu は既存のワークスペースから状態を移行するかどうかを選択するように求められます。
-
ローカル状態または状態バックエンドからの移行: 作業ディレクトリにすでに 1 つ以上のワークスペースに状態データがある場合、OpenTofu はその状態を新しいクラウドバックエンドワークスペースに移行するかどうかを尋ねます。
-
remote
バックエンドからの移行: 作業ディレクトリがすでにremote
バックエンドでクラウドバックエンドに接続されていた場合、OpenTofu は同じクラウドバックエンドワークスペースを使い続けることができます。remote
バックエンドブロックをcloud
ブロックに切り替える必要があります。
ローカル状態または状態バックエンドからの移行
作業ディレクトリにすでに状態データがある場合 (ローカル状態または状態バックエンドを使用している場合)、OpenTofu はクラウドバックエンドにその状態を移行する許可を求めます。移行先のクラウドバックエンド組織でワークスペースを管理する権限が必要になります。このプロセスはインタラクティブで自己説明型であり、状態バックエンド間の移動に似ています。
また、OpenTofu は移行中にワークスペースの名前を変更するように求める場合があります。これは、名前のない default
ワークスペースに名前を付けるため (クラウドバックエンドではすべてのワークスペースに名前が必要です)、またはワークスペース名にコンテキスト情報を追加するためです。OpenTofu CLI のみのワークスペースとは異なり、同じ構成に関連付けられた複数の環境 (本番、ステージング、開発など) を表しますが、クラウドバックエンドのワークスペースは完全に独立した構成を表すことができ、クラウドバックエンド組織内で一意の名前を持つ必要があります。
このため、OpenTofu は作業ディレクトリのワークスペースを既存の名前に関連したパターンに従って名前変更するように促します。これは、これらの特定のワークスペースが構成を共有しているという事実を示すことができます。一般的な戦略は <コンポーネント>-<環境>-<リージョン>
(例:networking-prod-us-east
、networking-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"]
}
}
}
cloud
ブロックはprefix
引数をサポートしていないため、移行後はOpenTofu CLIを使用する際にワークスペースをフルネームで参照する必要があります。たとえば、tofu workspace select prod
ではなく、tofu workspace select my-app-prod
というコマンドを実行する必要があります。