[Terraform] 테라폼 정리 - 2

박원균·2021년 10월 23일
0

Terraform

목록 보기
8/11
post-thumbnail

원격 상태 관리

Terraform으로 plan apply 명령어를 실행하면 terraform.tfstate파일이 생성됩니다. 이 파일에는 apply로 생성하거나 terraform import로 연결된 리소스에 대한 정보가 저장되어 있습니다.

  • Teamwork
    Remote state를 구성하면 원격 저장소에 tfstate 파일이 저장되며 모든사용자가 이를 쉽게 공유할 수 있습니다.
  • Locking
    Remote state에서는 같은 모듈의 동시 실행을 막는 Locking 기능도 지원합니다.
  • Sharing
    terraform.tfstate 파일이 비대해지는것을 막기 위해서는 모듈들을 폴더 단위로 분리 및 격리하여 설계해야합니다.
    Remote State에서 제공하는 terrform_remote_state Date Source를 활용하면 각자 다른 모듈사이에 output에 정의한 값들을 전달할 수 있습니다.
  • S3 backend
    AWS에서는 S3와 DynamoDB를 이용하여 Remote state를 구성할 수 있습니다.

파일 구성을 통한 구성

Terraform 레아이웃을 구성하면서 하나의 폴더에 모든 블럭을 선언하면 안됩니다.

이러한 방식으로 구성하게된다면 terraform.tfstate 파일에 모든 상태 정보가 저장이 됩니다.
결과 적으로 비대해진 Snapshot(상태파일)은 Terraform의 실행에도 부하를 주고 차후 유지 보수에서 좋지 못한 결과가 도출됩니다.

terraform.tfstate 파일 격리

  • Workspaces
    단순 Test 목적에 유용합니다. 실행 단계에서 논리적인 레이어가 추가됩니다.
  • File layout
    개발 환경 간의 강력한 분리가 필요한 Production 사례가 유용합니다.

Terraform 설치를 위한 플러그인

terraform init를 실행하게 되면 코드에 정의된 플로그인들을 다운로그 하게 됩니다.
TF_PLUGIN_CACHE_DIR 경로를 설정하면 초기화 단계에서 plugin들을 다운로드 받아 지정한 디렉토리에 저장하고 캐싱합니다.
이를 통해 terraform init에서 발생하는 대역폭 부하와 실행 시간을 줄일 수 있습니다.

#PowerShell
$ path = "C:\wgpark\terraform\plugin-cache"
$ New-Item -ItemType Directory -Force -Path $path

# 시스템 환경 변수 설정
$ [Enviroment] ::SetEmviromentVariable('TF_PLUGIN_CACHE_DIR',$path,'Machine')

이 게시글의 저작권은 베스핀글로벌 SRE 1팀 최창석님에게 있음을 밝힙니다.

profile
함바라기

0개의 댓글