인프라 구축기 (12) - S3에 있는 Terraform 상태 파일 활용하기

2024. 11. 2. 16:32·Infra/[인프라 구축기] Terraform 활용 AWS 인프라 구축

인프라 구축기

인프라 구축기 (9)에서 Terraform의 .tfstate 파일을 삭제하는 이슈가 있었다. 이때 배운 것 중 하나가 원격 저장소를 활용한 Terraform 상태 파일 관리였다. 그래서 원격 저장소인 AWS S3에 상태 파일을 두고 사용하는 방법을 살펴보고, 작성 중인 Terraform 코드에 적용해볼 것이다.

 

인프라 구축기 (9) - Terraform terraform.tfstate 삭제 이슈

인프라 구축기Terraform으로 aws 인프라를 지속적으로 관리하던 중 큰 문제 하나를 마주쳤다. 실수로 Terraform의 상태 파일인 terraform.ftstate를 삭제한 것이다. 이번 글에서는 해당 이슈를 해결한 과정

sanseo.tistory.com

각 디렉터리에 terraform.tf 파일 생성

찾아본 바에 의하면 terraform 블록은 main.tf와 따로 구성하는 게 일반적이라고 한다. 애초에 내가 구성한 .tf 파일에는 main.tf가 없지만, terraform.tf 파일을 새로 만들어 구성하였다.

  • S3 구성
    • 버킷 명 : popboard-s3-bucket
    • 상태 파일 경로 : terraform-tfstate/terraform.tfstate
    • 리전 : ap-northeast-2

vpc/terraform.tf

  • vpc인 것을 나타내도록 상태 파일 명을 vpc-terraform.tfstate로 지정
terraform {
  backend "s3" {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/vpc-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

instance/terraform.tf

  • instance인 것을 나타내도록 상태 파일 명을 instance-terraform.tfstate로 지정
terraform {
  backend "s3" {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/instance-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

storage/terraform.tf

  • storage인 것을 나타내도록 상태 파일 명을 storage-terraform.tfstate로 지정
terraform {
  backend "s3" {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/storage-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

lambda/terraform.tf

  • lambda인 것을 나타내도록 상태 파일 명을 lambda-terraform.tfstate로 지정
terraform {
  backend "s3" {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/lambda-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

각 디렉터리의 data.tf 코드 변경

Terraform의 backend가 로컬에서 원격 (S3)로 변경됨에 따라 data의 경로도 수정해주어야 한다. 변경 내용은 아래와 같다.

  • backend를 local에서 S3로 변경
  • S3의 bucket, key, region 입력

변경 전 data.tf의 타 모듈 변수 사용 방식

# storage
data "terraform_remote_state" "storage" {
  backend = "local"
  config = {
    path = "../storage/terraform.tfstate"
  }
}

변경 후 instance/data.tf

# vpc
data "terraform_remote_state" "vpc" {
  backend = "s3"
  config = {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/vpc-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

변경 후 storage/data.tf

# vpc
data "terraform_remote_state" "vpc" {
  backend = "s3"
  config = {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/vpc-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

변경 후 lambda/data.tf

# storage
data "terraform_remote_state" "storage" {
  backend = "s3"
  config = {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/storage-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

# instance
data "terraform_remote_state" "instance" {
  backend = "s3"
  config = {
    bucket = "popboard-s3-bucket"
    key    = "terraform-tfstate/instance-terraform.tfstate"
    region = "ap-northeast-2"
  }
}

S3의 상태 파일과 Terraform 연동 확인

S3 객체 확인

S3 Bucket

S3 연동 확인

  • 로컬의 terraform.tf를 삭제한 뒤 다시 init을 실행
terraform init
  • plan을 실행하여 이전과 같은 출력 결과가 나타난다면 연동이 제대로 된 것
terraform plan

terraform plan 결과

Reference

https://hgk5722.tistory.com/553

https://developer.hashicorp.com/terraform/language/backend/s3

https://brunch.co.kr/@alden/51

'Infra > [인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글

인프라 구축기 (14) : EC2 인스턴스 추가 및 lambda 함수 수정  (0) 2024.11.11
인프라 구축기 (13) : 진행 내용 & 진행 예정 내용 정리  (5) 2024.11.03
인프라 구축기 (11) - lambda IAM role 수정  (1) 2024.10.29
인프라 구축기 (10) - IAM 생성 코드 추가  (2) 2024.10.26
인프라 구축기 (9) - Terraform terraform.tfstate 삭제 이슈  (0) 2024.10.24
'Infra/[인프라 구축기] Terraform 활용 AWS 인프라 구축' 카테고리의 다른 글
  • 인프라 구축기 (14) : EC2 인스턴스 추가 및 lambda 함수 수정
  • 인프라 구축기 (13) : 진행 내용 & 진행 예정 내용 정리
  • 인프라 구축기 (11) - lambda IAM role 수정
  • 인프라 구축기 (10) - IAM 생성 코드 추가
기억에 남는 블로그 닉네임
기억에 남는 블로그 닉네임
  • 기억에 남는 블로그 닉네임
    얕게, 깊게
    기억에 남는 블로그 닉네임
  • 전체
    오늘
    어제
  • 블로그 메뉴

    • 홈
    • 방명록
    • 글쓰기
    • 분류 전체보기
      • Data Engineering
        • Airflow
        • 빅데이터
        • 자동화
        • 기타
      • Infra
        • AWS
        • Terraform
        • [인프라 구축기] Terraform 활용 AWS ..
      • CS
        • 자료구조
        • 알고리즘
        • 네트워크
        • 데이터베이스
        • 이것이 취업을 위한 코딩 테스트다 with 파이썬
      • Python
      • Web
      • Git
      • 기타
        • 취업 & 진로
        • 회고록
        • 기타
      • 프로젝트 단위 공부
        • [부스트코스] DataLit : 데이터 다루기
        • [개인 프로젝트] 공모전 크롤링
        • [개인 프로젝트] FC Online 공식 경기 분..
        • 프로젝트 개선 방안
      • [프로그래머스] 데이터 엔지니어링 데브코스 3기
        • TIL(Today I Learn)
        • 숙제
        • 기타
      • 알고리즘 연습
        • 프로그래머스
        • 백준
  • 링크

    • 깃허브
    • 링크드인
  • 인기 글

  • 최근 글

  • 최근 댓글

  • hELLO· Designed By정상우.v4.10.3
기억에 남는 블로그 닉네임
인프라 구축기 (12) - S3에 있는 Terraform 상태 파일 활용하기
상단으로

티스토리툴바