본문 바로가기
공부/IaC

[Terraform] 테라폼 backend의 이해

by haejang 2021. 3. 19.
728x90
728x90

 

+ 21.10.10

더 이해 많이 하고 쓴 글 : https://honglab.tistory.com/199

 

[Terraform] 실행 환경 분리와 Backend 설정 (AWS/Terraform Cloud)

Terraform Backend에 대해 썼던 기존 글 [Terraform] 테라폼 backend의 이해 [Terraform on AWS] 테라폼 backend, 상태 잠금 설정해보기 위 글들은 잘 모르는 상태에서 책 내용을 정리만 해 놓은 것이었다 테라폼..

honglab.tistory.com

 

 

 

참조

목차

1. 테라폼 상태 & backend

2. Locking & Backup

 

실습은 다음 글에서 진행해보도록 하겠다

 

1. 테라폼 상태 & backend

클라우드상엔 테라폼으로 생성한 것들 외에도 다양한 리소스들이 있다

테라폼은 자신이 관리하는 리소스들을 식별해야 하는데, 이 때 사용하는 것이 .tfstate 파일이다

 

이 때 backend란 테라폼의 상태(.tfstate)를 저장할 Remote State Storage에 대한 설정이다

backend를 사용하면 현재 배포된 최신 상태를 외부에 저장/공유하기 때문에 다른 사람과의 협업이 가능해진다

AWS S3를 많이 사용한다고 한다

 

여기서 테라폼의 명령들을 다시 한 번 살펴보겠다 (backend가 지정되었을 시)

  • terraform init
    • 지정한 backend에 상태 저장을 위한 .tfstate 파일을 생성 (가장 마지막에 적용한 테라폼 내역 저장)
    • init 작업이 완료되면 .tfstate에 정의된 내용을 담은 .terraform 파일이 생성됨
    • 기존에 다른 개발자가 .tfstate에 인프라를 정의해 놓았다면, init 명령을 통해 local(현재 개발자가 작성하고 있는 코드)에서 sync를 맞출 수 있다
  • terraform plan
    • 정의한 코드가 어떤 인프라를 만들게 되는지 예측 결과를 보여주는 명령
    • backend가 지정되어있지 않을 때와 동일하다
  • terraform apply
    • 실제 인프라 배포 생성 & 작업 결과가 backend의 .tfstate 파일에 저장됨
    • 해당 결과는 local의 .terraform 파일에도 저장됨

추가적으로, 이미 배포된 인프라 리소스들을 terraform state로 옮겨주는 terrform import 명령도 있다

 

2. Locking & Backup

Terraform 상태는 기본적으로는 로컬 스토리지에 저장을 하지만 backend를 사용해 S3, consul, etcd 등 다양한 원격 저장소를 사용할 수 있다

원격 저장소를 사용하는 이유는 아래와 같다

  • Locking : 협업 시 동시에 같은 state에 접근하는 것을 막는다
  • Backup : state 파일 유실 방지

따라서 다음 글에서 진행할 실습에서는 테라폼의 상태 저장을 위한 S3 뿐 아니라 Lock을 위한 DynamoDB Table도 생성해서 사용한다

 

 

728x90
728x90

댓글