■ はじめに
https://dk521123.hatenablog.com/entry/2023/05/05/004939
で、Terraform の tfstate / Backend について扱ったが 今回は、Workspace について、徐々にメモっておく
目次
【1】Workspace 【2】コマンド 1)Workspaceの作成 2)Workspaceの切替 【3】サンプル 例1:設定値の切替 【4】使用上の注意 1)tfstate保存先は、同じS3バケットを使用
【1】Workspace
* 同一の tfファイル群を別の tfsate として扱うことができる機能 => 複数のStateファイルを管理できるようになる
https://developer.hashicorp.com/terraform/language/state/workspaces
【2】コマンド
Command | Explanation | Memo |
---|---|---|
terraform workspace list | 既存のworkspaceを一覧表示 | |
terraform workspace new |
Workspaceの新規作成 | terraform workspace new prod |
terraform workspace select |
Workspaceの選択 | terraform workspace select prod |
terraform workspace delete |
Workspaceの削除 | terraform workspace delete prod |
terraform workspace show | 選択中のWorkspaceを表示 |
1)Workspaceの作成
##################### # For dev ##################### # Step1: Workspace「dev」を新規作成 terraform workspace new dev # Step2: デプロイ terraform apply ##################### # For stage ##################### terraform workspace new stage terraform apply ##################### # For prod ##################### terraform workspace new prod terraform apply
2)Workspaceの切替
# Workspace 一覧表示 terraform workspace list default << default。これは削除できない dev stage * prod # devに切り替える場合 terraform workspace select dev
main.tf
provider "aws" { region = "us-east-2" } locals { instance_types = { dev = "t2.micro" stage = "t2.small" prod = "m4.large" } } resource "aws_instance" "example" { ami = "ami-0fb653ca2d3203ac1" instance_type = local.instance_types[terraform.workspace] tags = { Name = "example-server-${terraform.workspace}" } }
【4】使用上の注意
1)tfstate保存先は、同じS3バケットを使用
* 環境を切り替えても、tfstate保存先のS3バケットは同一のものが使用される => 例えば、dev/stage/prodがアクセス可能な環境だったら使えるが それ以外では、使えない。。。
イメージ
s3://your-s3-bucket/:env/dev/terraform.tfstate s3://your-s3-bucket/:env/stage/terraform.tfstate s3://your-s3-bucket/:env/prod/terraform.tfstate
関連記事
Terraform ~ 環境構築編 ~
https://dk521123.hatenablog.com/entry/2023/04/05/000224
Terraform ~ 入門編 ~
https://dk521123.hatenablog.com/entry/2019/12/09/222057
Terraform ~ 基本編 ~
https://dk521123.hatenablog.com/entry/2023/05/03/000000
Terraform ~ 基本編 / Module ~
https://dk521123.hatenablog.com/entry/2023/05/19/113544
Terraform ~ local / variable ~
https://dk521123.hatenablog.com/entry/2023/12/24/173633
Terraform ~ tfstate / Backend ~
https://dk521123.hatenablog.com/entry/2023/05/05/004939
Terraform ~ Terraformあれこれ ~
https://dk521123.hatenablog.com/entry/2023/05/15/205352
Terraform ~ AWS Lambda / 入門編 ~
https://dk521123.hatenablog.com/entry/2024/05/30/010920
Terraform ~ AWS ECR ~
https://dk521123.hatenablog.com/entry/2023/05/23/002314
Terraform ~ tag あれこれ ~
https://dk521123.hatenablog.com/entry/2023/06/05/224944
Terraform ~ 複数環境へデプロイすることを考える ~
https://dk521123.hatenablog.com/entry/2023/05/06/003645
Lambda ~ Python / 入門編 ~
https://dk521123.hatenablog.com/entry/2021/10/07/103317
Lambda ~ Python / 外部モジュール追加 ~
https://dk521123.hatenablog.com/entry/2024/05/25/005456
Lambda ~ Python / S3トリガー ~
https://dk521123.hatenablog.com/entry/2024/05/23/162229