0Pricing
DevOps Bootcamp · 강의

환경에 작업 공간 사용

동일한 구성에서 개발, 스테이징, 운영 등 서로 다른 환경의 상태를 관리하는 Terraform 작업 공간을 살펴봅니다.

환경에 작업 공간 사용은(는) CoddyKit의 무료 DevOps Bootcamp 강의입니다. 이것은 4개 중 3번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 DevOps Bootcamp 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

Terraform 작업 공간이란 무엇인가요?

Terraform 작업 공간을 사용하면 동일한 Terraform 구성에 대해 서로 구분되는 여러 상태를 관리할 수 있습니다. 'dev', 'staging', 'prod'와 같은 별도의 환경이라고 생각하시면 됩니다.

따라서 코드를 변경하지 않고도 하나의 .tf 파일 집합을 사용해 서로 다른 위치에 인프라를 배포할 수 있으며, 재사용성과 일관성도 높일 수 있습니다.

'default' 작업 공간

디렉터리에서 Terraform을 처음 초기화하면(terraform init 사용) 자동으로 default 작업 공간을 사용하게 됩니다.

다른 작업 공간을 만들고 선택하지 않는 한, 처음 실행하는 모든 terraform apply 작업은 이 default 작업 공간에 상태를 저장합니다. 이 작업 공간은 항상 존재합니다!

새 작업 공간 만들기

새 환경을 만들려면 terraform workspace new 명령을 사용합니다. 이 명령은 현재 컨텍스트도 새로 만든 작업 공간으로 자동 전환합니다.

dev 작업 공간을 만들어 보겠습니다.

terraform workspace new dev

그러면 Terraform이 이 dev 환경을 위한 별도의 상태를 만듭니다.

사용 가능한 작업 공간 나열

terraform workspace list 명령을 사용하면 현재 구성 디렉터리에서 사용할 수 있는 모든 작업 공간을 확인할 수 있습니다.

현재 활성화된 작업 공간에는 별표(*)가 표시되므로 서로 다른 환경을 쉽게 구분할 수 있습니다.

terraform workspace list

작업 공간 전환

기존 작업 공간 사이를 전환하려면 terraform workspace select 명령 뒤에 작업 공간 이름을 지정합니다. 이 명령은 활성 환경을 변경합니다.

default 작업 공간으로 다시 전환해 보겠습니다.

terraform workspace select default

이제 이후에 실행하는 Terraform 작업은 default 환경의 상태를 대상으로 합니다.

'terraform.workspace' 사용

내장 terraform.workspace 변수를 사용해 현재 작업 공간 이름을 참조하면 구성을 동적으로 만들 수 있습니다. 리소스 이름을 지정하거나 환경별 태그를 설정할 때 특히 유용합니다.

이 예제를 실행해 보세요. 먼저 terraform init을 실행한 다음 terraform workspace new dev를 실행하고, 마지막으로 terraform apply를 실행합니다. 버킷 이름과 태그를 확인해 보세요.

provider "aws" {
  region = "us-east-1" # Or your preferred region
}

resource "aws_s3_bucket" "example" {
  bucket = "my-unique-bucket-${terraform.workspace}-12345"
  acl    = "private"

  tags = {
    Environment = terraform.workspace
    ManagedBy   = "CoddyKit"
  }
}

output "bucket_name" {
  description = "Name of the S3 bucket created."
  value       = aws_s3_bucket.example.bucket
}

격리된 상태 파일

작업 공간의 가장 중요한 특징은 각 작업 공간이 완전히 분리된 상태 파일을 자체적으로 유지한다는 점입니다.

따라서 동일한 구성 파일로 정의되었더라도 dev 작업 공간에 배포된 리소스는 prod 작업 공간의 리소스에 영향을 주지 않습니다. Terraform은 작업 디렉터리 안의 숨겨진 디렉터리(.terraform/environments)에서 이러한 상태 파일을 관리합니다.

작업 공간 삭제

환경이 더 이상 필요하지 않으면 terraform workspace delete <name>을 사용해 해당 작업 공간을 삭제할 수 있습니다.

  • 중요: 현재 활성화된 작업 공간은 삭제할 수 없습니다.
  • 매우 중요: 작업 공간을 삭제하기 전에 terraform destroy를 사용해 해당 작업 공간과 연결된 모든 리소스를 삭제했는지 반드시 확인하세요. 그렇지 않으면 연결이 끊긴 리소스가 남을 수 있습니다!
terraform workspace select default
terraform workspace delete dev

작업 공간과 별도 디렉터리 비교

작업 공간은 동일한 구성에 약간의 변형을 적용할 때 유용하지만, 항상 최선의 선택은 아닙니다. 다음 사항을 고려해 보세요.

  • 작업 공간: 동일한 핵심 인프라 설계에서 환경별 차이가 작은 경우(예: 리소스 개수, 태그)에 적합합니다.
  • 별도 디렉터리: 인프라 설계가 크게 다르거나 서로 다른 팀이 완전히 별개의 환경을 관리하는 경우에 더 적합합니다.

프로젝트의 복잡도와 팀 구조에 가장 잘 맞는 방식을 선택하세요.

작업 공간 확인

Terraform 작업 공간에 대해 배웠습니다. 이제 이해한 내용을 테스트해 보겠습니다.

복습: 환경을 위한 작업 공간

잘하셨습니다! 하나의 구성에서 여러 환경을 관리할 수 있는 강력한 기능인 Terraform 작업 공간을 살펴보았습니다. 다음 핵심 내용을 기억하세요.

  • 작업 공간은 서로 다른 환경(예: dev, prod)을 위한 격리된 상태 파일을 제공합니다.
  • terraform workspace new, list, select를 사용해 작업 공간을 관리합니다.
  • terraform.workspace 변수를 사용하면 동적인 환경별 구성을 만들 수 있습니다.
  • 연결이 끊긴 인프라가 남지 않도록 작업 공간을 삭제하기 전에 항상 리소스를 삭제하세요.

이를 통해 유연하고 체계적인 인프라 배포가 가능합니다!

자주 묻는 질문

“환경에 작업 공간 사용” 강의는 무료인가요?

네 — “환경에 작업 공간 사용” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 DevOps Bootcamp 강의 전체를 잠금 해제할 수 있습니다. DevOps Bootcamp 강의에는 총 4개의 강의가 포함되어 있습니다.

“환경에 작업 공간 사용”에서 뭘 배우나요?

동일한 구성에서 개발, 스테이징, 운영 등 서로 다른 환경의 상태를 관리하는 Terraform 작업 공간을 살펴봅니다. 브라우저에서 직접 실행하는 실습 코드로 DevOps Bootcamp을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

DevOps Bootcamp을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 DevOps Bootcamp은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 3번째 강의입니다.

“환경에 작업 공간 사용” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 DevOps Bootcamp 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 DevOps Bootcamp 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. Terraform 모듈 소개
  2. 재사용 가능한 모듈 만들기
  3. 환경에 작업 공간 사용
  4. 레지스트리에 모듈 게시하기
← DevOps Bootcamp(으)로 돌아가기