워크스페이스
워크스페이스 (Workspaces)
각 테라폼 구성에는 연관된 백엔드가 있고, 백엔드는 테라폼이 작업을 어떻게 실행하고 state 같은 영구 데이터를 어디에 저장할지 정의해요.
출처: 문서
본문
백엔드에 저장된 영구 데이터는 워크스페이스(workspace)에 속해요. 백엔드는 처음에 그 구성에 연관된 테라폼 state 하나를 담은 워크스페이스가 하나만 있어요. 일부 백엔드는 여러 개의 이름 있는 워크스페이스를 지원해서, 단일 구성에 여러 state를 연결할 수 있어요. 구성은 여전히 백엔드가 하나뿐이지만, 새 백엔드를 구성하거나 인증 자격증명(credentials)을 바꾸지 않고도 그 구성의 여러 개별 인스턴스로 배포할 수 있어요.
참고: 테라폼 CLI 워크스페이스는 HCP Terraform의 워크스페이스와는 달라요. 여러 워크스페이스가 있는 구성을 HCP Terraform으로 마이그레이션하는 방법은 HCP Terraform에 연결을 참고하세요.
여러 워크스페이스를 지원하는 백엔드
다음 백엔드에서 여러 워크스페이스를 사용할 수 있어요.
워크스페이스 사용하기
중요: 워크스페이스는 시스템 분해나 별도의 자격증명·접근 제어가 필요한 배포에는 적합하지 않아요. 자세한 내용과 권장 대안은 테라폼 CLI 문서의 사용 사례(Use Cases)를 참고하세요.
테라폼은 삭제할 수 없는 default라는 단일 기본 워크스페이스로 시작해요. 새 워크스페이스를 만들지 않았다면 테라폼 작업 디렉터리에서 기본 워크스페이스를 사용하고 있는 것이에요.
새 워크스페이스에서 terraform plan을 실행하면 테라폼은 다른 워크스페이스의 기존 리소스에 접근하지 않아요. 이 리소스들은 물리적으로 여전히 존재하지만, 그것들을 관리하려면 워크스페이스를 전환해야 해요.
워크스페이스를 만들고 사용하는 전체 방법은 테라폼 CLI 워크스페이스 문서를 참고하세요.
현재 워크스페이스 보간 (Current Workspace Interpolation)
테라폼 구성 안에서 ${terraform.workspace} 보간 시퀀스로 현재 워크스페이스의 이름을 포함할 수 있어요. 이 값은 보간이 허용되는 어디에서나 사용할 수 있어요.
현재 워크스페이스를 참조하는 것은 워크스페이스에 따라 동작을 바꾸는 데 유용해요. 예를 들어 기본이 아닌 워크스페이스에서는 더 작은 클러스터 크기를 띄우는 것이 유용할 수 있어요.
resource "aws_instance" "example" {
count = terraform.workspace == "default" ? 5 : 1
# ... other arguments
}
또 다른 인기 있는 사용 사례는 이름 짓기나 태깅 동작에서 워크스페이스 이름을 사용하는 것이에요.
resource "aws_instance" "example" {
tags = {
Name = "web - ${terraform.workspace}"
}
# ... other arguments
}
더 알아보기 (Learn more)
- 테라폼 CLI 워크스페이스 — 워크스페이스 생성·사용의 전체 가이드.
- State의 목적 — state가 왜 필요한지.
- 원격 state — 팀 환경에서 state 공유.