•
하나의 테라폼 환경에서 문제가 발생할 경우 다른 환경에 영향을 주지 않아야 합니다. 이를 위해 .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 활용)