본문 바로가기
카테고리 없음

테라폼 상태파일 remote state 구성

by 홍띠 2024. 3. 10.

테라폼 상태파일 이란?

테라폼을 사용해 인프라를 배포하면 별다른 설정 없이 테라폼 실행 위치에 *.tfstate 파일이 생성되는 것을 발견 할 수 있다.

이 파일에는 테라폼이 관리하는 모든 리소스의 상태, 구성 및 관계 등이 포함되어 현재 인프라의 현재 상태를 알 수 있도록 해준다. 테라폼은 이 상태파일을 사용하여 인프라를 관리하고 추적하며, 테라폼 명령을 실행 할 때마다 상태파일을 업데이트 하면서 변경사항을 식별하고 적용한다.

Remote state 구성

왜 remote state를 구성하여 상태파일을 관리해야 할까?

Local state를 사용하면 안되는 이유는 다음과 같다.

  • 개발자들이 각자 로컬에서 테라폼 명령어를 실행하고 관리한다면, 각자 다른 상태파일을 갖게 되어 현재상태로 동기화 되지 않은 상태파일을 사용하게 된다.
  • 동일한 상태파일 공유를 위해 git과 같은 형상관리툴을 사용하면 아래와 같은 문제가 발생한다.
    • 동일한 리소스에 대해서 여러 개발자가 동시에 테라폼 명령하는 것을 막을 수 없음
    • pull을 받지 않고 apply를 실행한다던가, apply후 commit/push를 잊는 실수를 저지를 수 있음
  • 상태파일은 초기 DB 비밀번호 같은 민감한 정보를 포함 할 수 있는데, local state를 사용하면 상태파일은 JSON plain-text로 저장된다.

remote state를 사용하면 위의 문제들을 해결하고 안전하게 상태파일을 관리 할 수 있다.

설정 방법

설정은 간단하다. 아래와 같이 상태파일을 관리할 위치를 명시해 주면 된다.

아래 예제는 S3 버킷을 이용해 관리하는 방법이다.

terraform {
  backend "s3" {
    bucket = "<버킷이름>"
    key    = "<상태파일 저장 경로>/terraform.tfstate"
    region = "<리전>"
  }
}