Terraform Backend

이eun·2024년 12월 27일

Terraform Backend란

  • Terraform “Backend” 는 Terraform의 state file을 어디에 저장을 하고, 가져올지에 대한 설정입니다. 기본적으로는는 로컬 스토리지에 저장을 하지만, 설정에 따라서 s3, consul, etcd 등 다양한 “Backend type“을 사용할 수 있습니다.
  • Terraform state를 관리
  • state는 원격 저장소인 'backend'에도 저장될 수 있음
  • terraform state는 우리가 apply를 실행해서 리소스가 생성되고 난 후에, "terraform.tfstate"라는 파일이 생성됨
  • backed.tf의 경로와 s3의 디렉토리 구조가 일치해야 좋은 코드임
  • 즉, 내가 실행한 "apply의 결과"를 저장해 놓은 "상태"임
  • terraform state는 현재 인프라의 상태를 의미하는 것은 아님
    적용한 시점의 상태일 뿐

terraform.tfstate 예시

{
  "version": 4,
  "terraform_version": "0.12.24",
  "serial": 3,
  "lineage": "3c77XXXX-2de4-7736-1447-038974a3c187",
  "outputs": {},
  "resources": [
    {...},
    {...},  
  ]
}

Terraform Backend를 사용하는 이유?

  • Locking: 보통 Terraform 코드를 혼자 작성하지 않습니다. 인프라를 변경한다는 것은 굉장히 민감한 작업이 될 수 있습니다. 원격 저장소를 사용함으로써 동시에 같은 state를 접근하는 것을 막아 의도치 않은 변경을 방지할 수 있습니다. => 서비스 장애로 이루어질 수 있기 때문임
  • Backup: 로컬 스토리지에 저장한다는건 유실할 수 있다는 가능성을 내포합니다. S3와 같은 원격저장소를 사용함으로써 state 파일의 유실을 방지합니다. 또한 테이블은 DynamoDB를 사용한다.

0개의 댓글