Workspace를 통해 개발(dev) 환경과 운영(prod) 환경을 분리하여 소프트웨어 개발과 배포 과정에서 발생할 수 있는 문제를 최소화한다.
Workspace는 Terraform에서 제공하는 기본적인 기능으로, 동일한 Terraform 코드를 다른 환경에서 사용할 수 있도록 돕는다. 각 환경에 대해 변수, 상태 파일 등을 분리하여 관리할 수 있어서, 개발 환경과 운영 환경을 분리할 때 유용하다.
workspace 명령어 확인
terraform workspace --help
workspace 생성
terraform workspace new [workspace 이름]
# 예시
terraform workspace new dev
workspace 삭제
terraform workspace delete [workspace 이름]
workspace 리스트
terraform workspace list
workspace간 이동
terraform workspace select [workspace 이름]
# 예시
terraform workspace select dev
CLI로 workspace간 이동한다고 해도 별 차이를 못 느낄 것이다. 코드가 동일하기 때문이다. Terraform workspace를 가상환경처럼 사용하려면 어떻게 사용해야 할까?
workspace를 생성하면 ${terraform.workspace} 환경 변수를 사용할 수 있다.
예를 들면 아래와 같이 terraform.workspace를 이용하여 환경별로 다른 인스턴스 타입을 지정하고 다른 tag를 붙일 수 있다.
provider "aws" {
region = "ap-northeast-2"
}
resource "aws_instance" "example" {
ami = "ami-0fb653ca2d3203ac1"
instance_type = terraform.workspace == "prod" ? "m4.large" : "t2.micro"
tags = {
Name = "example-server-${terraform.workspace}"
}
}