TL;DR

Terraform CLI で、同じ作業ディレクトリの中に複数のステートを持つための仕組み。同じ設定から、互いに重ならない複数のリソースの組を作れる。

なぜ必要か

公式ドキュメントによると、本番環境を変える前に、インフラの複製を作って変更を試すのに使える。フィーチャーブランチごとに一時的なワークスペースを作り、テスト用のインフラを置く使い方もある。

仕組み

初期化した作業ディレクトリには、最初は default という名前のワークスペースだけがある。ワークスペースは、技術的にはステートファイルの名前を変えるのと同じである。

terraform workspace new で作り、list で一覧を表示し、select で切り替え、delete で削除する。1 つの作業ディレクトリで同時に選べるワークスペースは 1 つだけである。

注意点

同じ作業ディレクトリのワークスペースは同じバックエンドを使うので、アクセスを分けられない。開発段階ごとの環境や、認証情報の異なるチームを強く分けたいときには向かない。公式ドキュメントは、その場合は設定やバックエンドを分けることを勧めている。

HCP Terraform のワークスペースは、それぞれが設定を持つ別の概念である。

関連

出典