- OpenTofu言語
- 状態
- ワークスペース
ワークスペース
OpenTofuの各構成には、OpenTofuが操作を実行する方法と、状態などの永続データを保存する場所を定義するバックエンドが関連付けられています。
バックエンドに保存される永続データは、ワークスペースに属します。バックエンドには、最初にその構成に関連付けられた1つのOpenTofu状態を含むワークスペースが1つだけあります。一部のバックエンドは、複数の名前付きワークスペースをサポートしており、複数の状態を単一の構成に関連付けることができます。構成には依然としてバックエンドが1つだけですが、新しいバックエンドを構成したり、認証資格情報を変更したりすることなく、その構成の複数の異なるインスタンスをデプロイできます。
複数ワークスペースをサポートするバックエンド
次のバックエンドで複数のワークスペースを使用できます
ワークスペースの使用
ワークスペースは、システムの分解や、個別の資格情報とアクセス制御を必要とするデプロイメントには適していません。詳細と推奨される代替案については、OpenTofu CLIドキュメントのユースケースを参照してください。
OpenTofuは、削除できない`default`という名前の単一のデフォルトワークスペースから始まります。新しいワークスペースを作成していない場合は、OpenTofu作業ディレクトリでデフォルトワークスペースを使用しています。
新しいワークスペースで`tofu plan`を実行すると、OpenTofuは他のワークスペースの既存のリソースにアクセスしません。これらのリソースは物理的にはまだ存在しますが、管理するにはワークスペースを切り替える必要があります。
ワークスペースの作成と使用方法の詳細については、OpenTofu CLIワークスペースのドキュメントを参照してください。
現在のワークスペースの補間
OpenTofu構成内で、`${terraform.workspace}`補間シーケンスを使用して現在のワークスペースの名前を含めることができます。これは、補間が許可されている場所であればどこでも使用できます。
現在のワークスペースを参照することは、ワークスペースに基づいて動作を変更するのに役立ちます。たとえば、デフォルト以外のワークスペースの場合、より小さいクラスターサイズを起動すると便利な場合があります。次に例を示します
resource "aws_instance" "example" {
count = "${terraform.workspace == "default" ? 5 : 1}"
# ... other arguments
}
もう1つの一般的なユースケースは、ワークスペース名を命名またはタグ付け動作の一部として使用することです
resource "aws_instance" "example" {
tags = {
Name = "web - ${terraform.workspace}"
}
# ... other arguments
}