継続は力なり

タイトル通り定期的な更新を心掛けるブログです。

複数アカウントや環境の切り替えに Terraform の WorkSpaces を使ってみた

タダです.

最近,Terraform を業務で使ったのですがデプロイする環境が複数の AWS アカウントでした.同じコードをアカウントを変えてデプロイすることを初めてやってみてわかったのが tfstate ファイルを最初のデプロイ以降に Terraform 側でデプロイするたび参照するため別のアカウントにデプロイが難しかったです.そこで Terraform の WorkSpaces を使ったのでこの記事で使い方を整理しておきます.

Terraform における WorkSpaces とは

WorkSpace は Python の仮想環境のように環境ごとに設定を切り替えてデプロイを実行したい場合に有効です.Terraform ではdefaultという単一のワークスペースが割り当てられており,WorkSpace を切り替えることで tfstate ファイルも切り替えられるのが特徴です.

www.terraform.io

WorkSpaces の使い方

WorkSpaces の使い方を見ていきましょう.terraform workspace --help で関連コマンドを確認できます.

» terraform workspace --help
Usage: terraform workspace

  New, list, show, select and delete Terraform workspaces.

Subcommands:
    delete    Delete a workspace
    list      List Workspaces
    new       Create a new workspace
    select    Select a workspace
    show      Show the name of the current workspace

ワークスペースの作成

新しく WorkSpaces を作りたい場合は new コマンドを使います.以下のはdevというワークスペースを作った例です.

» terraform workspace new dev
Created and switched to workspace "dev"!

You're now on a new, empty workspace. Workspaces isolate their state,
so if you run "terraform plan" Terraform will not see any existing state
for this configuration.

現在のワークスペースの表示

現在のワークスペースを表示したい場合はshowコマンドを使います.

» terraform workspace show   
dev

ワークスペースの一覧を表示する

ワークスペースを一覧の表示をするときはlistコマンドを使います.*が付いているのが現在のワークスペースになります.

» terraform workspace list
  default
* dev

ワークスペースの切り替え

ワークスペースの切り替えはselectを使って次のように行います.

» terraform workspace select default
Switched to workspace "default".
» terraform workspace show          
default

まとめ

Terraform の WorkSpaces を初めて使ったので概要とどう使うかの整理をしました.業務ではなかなか使えてないですが,引き続き学んだことはアウトプットしていきます!