본문 바로가기
INFRA/Automation

Terraform Remote State (S3편)

by BTC_물콩 2023. 5. 26.

베하 ~~ 콩순이들 BTC_물콩입니다 ~

이번주는 Terraform Remote State (S3)편을 준비해 보았습니다 !!

 

☑️ 우선 !! Terraform Remote State란 무엇일까요 ?

Remote State란 Terraform 코드로 정의된 인프라스트럭처의 현재 상태 정보를 저장하는 것을 의미합니다.

이 상태 정보는 Terraform이 인프라스트럭처를 관리하는 동안 필요한 정보로, 이전에 만든 리소스 및 구성의 현재 상태를 포함합니다.

 

☑️ Terraform Backend란 무엇일까요 ?

Terraform Backend란 Terraform의 State File을 어디에 저장하고 가져올지에 대한 설정입니다.

Terraform은 S3, ETCD, Consul 등여러 목적지에서 상태 정보를 저장하고 공유할 수 있습니다.

그 중 하나가오늘 저희가 다뤄볼 Amazon S3입니다. !!

(Amazon S3는 클라우드 기반의 객체 스토리지 서비스로, 대규모의 데이터를 안전하게 저장하고 액세스할 수 있도록 지원합니다.)

 

☑️ 그렇다면 왜!!  Backend를 사용해야 할까요 ?

🔷 Locking

Terraform을 사용하면 동시에 여러 팀원들이 인프라스트럭처를 변경할 수 있습니다.

이러한 상황에서 동시에 같은 상태(state)에 접근하면 충돌이 발생합니다 

예를 들어 두 명의 팀원이 동시에 같은 리소스를 수정하게 된다면 마지막에 변경된 내용이 적용되고 그 이전의 작업에 대해서는 무시되는 끔찍..한 상황이 발생하게 됩니다 ...! 😱😱

이런 충돌을 방지하기 위해 Terraform Backend는 Locking(잠금) 기능을 제공하여 한명이 작업을 수행하는 동안 해당 상태를 잠금 상태로 유지하게 동시 수정을 방지합니다.

이로써 여러 팀원이 협업하는 동안 충돌 또는 데이터 손실을 방지할 수 있습니다 !

 

🔷 Backup

로컬이나 로컬 파일 시스템에 Terraform 상태 파일을 저장하는 것은 데이터 유실의 위험을 가지고 있습니다.

예를 들어 로컬 시스템에 장애가 발생하여 파일이 삭제된다면 열심히 !!!! 구성한 인프라스트럭처 상태를 복구하기 어려울 수 있습니다 ...o(≧口≦)o

하지만 Terraform의 Backend를 사용하면 상태 정보를 원격 위치, 즉 S3에 저장함으로써 백업을 보장할 수 있습니다.

S3는 내구성이 뛰어나고 데이터의 가용성과 안정성을 보장하는 기능을 제고아기 때문에 상태 정보를 안전하게 보관할 수 있습니다.

이를 통해 인프라스트럭처를 원하는 시점으로 복원할 수 있으며 중요한 상태 정보의 손실을 방지할 수 있습니다.

 

즉 Terraform의 Backend를 사용함으로써 동시 작업 충돌을 방지하고,

인프라스트럭처 상태의 백업을 보장하여 데이터 유실을 방지할 수 있습니다.

이를 통해 팀원 간의 협업을 원활하게 하고 신뢰성 있는 인프라스트럭처 관리를 할 수 있습니다 😊😊😊

 

☑️ S3  Backend는 어떻게 구성할까요 ?

1. 먼저 Backend로 사용할 Bucket을 생성합니다 

이때 Bucket의 이름은 고유해야 합니다 ~

위의 코드를 Terraform으로 실행하고 나면 ...!

이렇게 AWS 콘솔에서 S3 Bucket이 생성된 모습을 확인할 수 있습니다 ㅎㅎ

 

2. 다른 폴더 파일에 S3 블록을 추가하여 S3 Backend 구성

Backend를 사용할 폴더에 Backend 선언을 해주고 어떤 이름으로 상태를 저장할지 설정해줍니다!

S3 내에 vpc 폴더가 생성되며 상태파일이 저장되는 모습을 확인할 수 있습니다 !.

 

어떠신가요 !! 이번 시간 재미있으셨나요 (❁´◡`❁) 

이번 포스팅이 도움이 되셨길 바라며 다음 시간에 또 만나요 ~~~ 

'INFRA > Automation' 카테고리의 다른 글

[Terraform] Meta-Argument 2 . for_each문  (0) 2023.06.30
[Terraform] 모듈과 모듈화  (0) 2023.06.22
[Terraform] Meta-Argument 1 . Count문  (0) 2023.06.13
[Terraform] Terraform module  (0) 2023.05.21
[Terraform] Terraform 환경구성  (0) 2023.05.12

댓글