Home
home

05. Terraform 상태 파일 격리

하나의 테라폼 환경에서 문제가 발생할 경우 다른 환경에 영향을 주지 않아야 합니다. 이를 위해 .tfstate 상태파일을 격리해야 합니다.
상태파일 격리 방법은 다음 2가지 방법으로 구분할 수 있습니다.
작업 공간을 통한 격리
파일 레이아웃을 통한 격리

1. 작업 공간 격리 (Isolation via Workspaces)

테라폼은 여러 개의 작업 공간(Workspace)를 제공합니다. 기본적으로 Default 작업 공간을 사용하며, 필요에 따라 새로운 작업 공간을 생성하고 전환할 수 있습니다.
테라폼 작업 공간 설정은 terraform workspace 명령어를 사용합니다.
1.
테라폼 작업 공간 생성하기
terraform workspace new [WORKSPACE_NAME]
Bash
복사
2.
현재 위치한 테라폼 작업 공간 확인하기
terraform workspace show ================= output ================= default
Bash
복사
3.
생성된 테라폼 작업 공간 확인하기
terraform workspace list ================= output ================= * default example1 example2
Bash
복사
1-4) 현재 위치한 테라폼 작업 공간 변경하기
terraform workspace select [WORKSPACE_NAME] ================= output ================= Switched to workspace "example1".
Bash
복사
테라폼 작업 공간을 생성하면 evn: 이라는 폴더가 각각의 작업 공간 별로 생성되고 상태파일(.tfstate)이 존재합니다.
작업 공간을 통한 격리 방식은 아래와 같은 단점이 존재하며, 파일 레이아웃 격리 방식을 추천합니다.
작업 공간을 통한 격리의 단점
상태 파일이 모두 동일한 백엔드에 저장되어 보안 통제의 제약이 따릅니다.
현재 작업 공간 정보에 대해 terraform workspace 명령어로 별도 확인 작업이 필요합니다. (이로 인해 작업 실수 유발이나 불편함 초래)

2. 파일 레이아웃을 통한 격리

서로 다른 환경의 테라폼 구성 파일을 분리하여 폴더에 저장하고, 서로 다른 백엔드를 구성합니다.
애초에 파일 레이아웃을 통하여 분류하기 때문에 코드 탐색이나 환경 요소 파악이 수월하며 상태파일 격리로 서로 다른 환경별로 영향을 주지 않습니다.
[Caption] 파일 레이아웃 분리 예시
파일 레이아웃을 통한 격리 방식은 아래와 같은 단점이 존재합니다.
파일 레이아웃 격리의 단점
전체 인프라를 실행할 경우 한 번의 명령으로 수행하기 어렵습니다. 각각의 구성에서 명령을 수행해야 합니다.
다른 폴더로 분리되어 자원의 참조에 어려움이 따릅니다. (Remote State Block 활용이나 Terragrunt 활용)