이번 시간에는 Terraform Worksapce에 대해서 알아보겠습니다.
Terraform Worksapce
Workspace란 State를 관리하는 논리적인 가상 공간을 워크스페이스라고 합니다.
테라폼 구성 파일은 동일하지만 작업자는 서로 다른 State를 갖는 실제 대상을 프로비저닝할 수 있습니다.
워크스페이스는 기본 default로 정의되고 로컬 작업 환경의 워크스페이스 관리를 위한 CLI 명령어로 workspace가 있다.
terraform workspace list
* default
환경을 격리하는 방법
환경을 격리하는 방법은 2가지가 있습니다.
- 작업 공간을 통한 격리
- 동일한 구성에서 빠르고 격리된 테스트 환경에 유용
- 파일 레이아웃을 이용한 격리
- 보다 강력하게 분리해야 하는 운영 환경에 적합
- 테라폼 프로젝트의 파일 레이아웃 설명
- 각 테라폼 구성 파일을 분리된 폴더에 넣기. (예. stage , prod)
- 각 환경에 서로 다른 백엔드 구성. (예. S3 버킷 백엔드의 AWS 계정을 분리)
---dev
| |
| |-- vpc
| | |-- vpc.tf
| | |-- outputs.tf
| | |-- variables.tf
| |
| |-- db
| | |--mysql.tf
|
|--stage
| |
| |-- vpc
| |
| |-- db
|
|--prd
| |
| |-- vpc
| |
| |-- db
|
|--common
| |
| |-- iam
| |-- s3
- 최상위 폴더
- dev : 개발 환경
- stage : 테스트 환경과 같은 사전 프로덕션 워크로드 workload 환경
- prod : 사용자용 맵 같은 프로덕션 워크로드 환경
- common: S3, IAM과 같이 모든 환경에서 사용되는 리소스를 배치
각 환경별 구성 요소
- vpc : 해당 환경을 위한 네트워크 토폴로지
- db: 해당 환경 별 데이터 저장소. 각 데이터 저장소 역시 자체 폴더에 위치하여 다른 데이터 저장소와 분리
명명 규칙 naming conventions (예시)
- varialbes.tf : 입력 변수
- outputs.tf : 출력 변수
Workspce 사용 장점
- 하나의 루트 모듈에서 다른 환경을 위한 resource 를 동일한 구성으로 프로비저닝 관리를 합니다.
- 기존 프로비저닝 환경에 영향을 주지 않고 변경 사항 실험이 가능합니다.
- git 의 branch 전략처럼 동일한 구성에서 서로 다른 resource 결과 관리를 할 수 있습니다.
Workspce 사용 단점
- State 가 동일한 저장소에 저장되어 State 접근 권한 관리 불가능합니다.
- 모든 환경이 동일한 resource 를 요구하지 않을 수 있기에 분기 처리가 다수 발생 할 수 있습니다.
- 프로비저닝 대상에 대한 인증 요소를 분리하기 어려우며 이를 해결 하기 위해 루트 모듈을 별도로 구성하는 폴더 기반의 레이아웃을 사용 할 수 있다.
- 완벽한 격리가 불가능합니다.
'Terraform' 카테고리의 다른 글
[Terraform] Terraform 프로바이더, 반복문 (0) | 2023.07.28 |
---|---|
[Terraform] Terraform module (0) | 2023.07.28 |
[Terraform] Terraform 상태관리 및 격리방안 (0) | 2023.07.28 |
[Terraform] Terraform 기본 사용법 조건문, 함수, Provisioners, moved, 시스템 변수 (0) | 2023.07.22 |
[Terraform] Terrafrom 사용법 반복문 (0) | 2023.07.16 |