상세 컨텐츠

본문 제목

[테라폼/Terraform]테라폼 상태 관리하기/상태 파일 격리

Development/테라폼

by J-Developer 2022. 5. 31. 15:13

본문

반응형

▶ 상태 파일 격리

 

하나의 환경에서 문제가 발생하더라도 다른 환경에 영향을 주지 않도록 상태 파일을 격리를 해야합니다. 상태 파일 격리에는 2가지 방법이 있습니다.

 

 

 

▷ 작업 공간을 통한 격리

 

테라폼은 별도의 이름을 가진 여러 개의 작업 공간에 저장할 수 있습니다.

테라폼은 default라는 기본 작업 공간에서 시작하며 작업 공간을 지저앟지 않으면 기본 작업 공간을 사용합니다.

 

# 테라폼 워크 스페이스를 생성합니다.
$ terraform workspace new example1

# 현재 사용중인 워크스페이스를 보여줍니다.
$ terraform workspace show

# 생성된 워크스페이스 목록을 보여줍니다.
$ terraform workspace list

# 워크스페이스를 전환할 수 있습니다.
$ terraform workspace select <workspace name>

 

 

워크스페이스 생성 후 적용 시 S3에는 ‘evn:’ 라는 폴더가 생성 되고, 각 워크스페이스 마다 각자의 상태 파일을 따로 가지고 있습니다.

GCP에서는 백엔드에 지정한 경로에 워크스페이스 명.tfstate 파일이 생성됩니다.

 

GCP 워크스페이 백엔드 예시 이미지

 

 

위의 워크스페이스에는 몇 가지 단점이 있습니다.

  • 모든 작업 공간의 상태 파일이 동일한 스토리지에 저장 됩니다.
  • terraform workspace 명령어를 실행하지 않으면 워크스페이스에 대한 정보를 알기가 어렵습니다.
  • 어떠한 워크스페이스에서 작업하는지 잊어버릴 수가 있어 실수를 할 수가 있습니다.

 

▷ 파일 레이아웃을 이용한 격리

 

환경을 완전히 격리하려면 다음과 같이 하면 됩니다.

  • 각 테라폼 구성 파일을 분리된 폴더에 넣습니다. 예를 들어 스테이징 환경의 대한 모든 구성은 stage 폴더에, 프로덕션 환경의 모든 구성은 prod 폴더에 넣습니다.
  • 서로 다른 권한을 사용하여 다른 백엔드를 구성합니다. 예를 들어 각 환경은 각각 분리된 S3 버킷을 백엔드로 사용합니다.

 

각 환경별 VPC, 서비스, 데이터 베이스 같은 각 구성 요소를 별도의 테라폼 폴더 혹은 별도의 상태 파일에서 사용하는 것을 권합니다.

 

파일 격리 예시 이미지

위와 같은 구성은 어떤 면에서 단점으로 작용합니다.

  • 실수로 인한 인프라를 망가뜨리진 않겠지만 한 번의 명령으로 전체 인프라를 만들수 없습니다. 위와 같은 구성에서는 각 구성 요소 각각에 apply 명령을 실행해야 합니다. 테라그런트를 사용하는 경우 apply-all 명령을 사용하여 이 프로세스를 자동화 할 수는 있습니다.
  • 다른 폴더에 있는 리소스를 직접 액세스 할 수 없어 리소스 종속성을 사용할 수 없습니다.

 

 

참조 : https://book.naver.com/bookdb/book_detail.naver?bid=20489970
 

테라폼 업앤러닝

이 책은 예제 소개를 뛰어넘어 실제 환경에서 테라폼을 사용하는 방법에 중점을 두고 만들어졌다. 외국어에 능통해지려면 원어민과 대화하고, 외국어 TV 쇼를 보고, 외국 음악을 듣는데 시간을

book.naver.com

반응형

관련글 더보기

댓글 영역