본문 바로가기
INFRA/Operation

terraform backend 설정 - s3

by BTC_김쿼카 2022. 12. 21.

ABTCEFG♪  안녕하세요, 여러분!

BTC_김쿼카입니다.

 

이번 시간에는 terraform 백엔드 사용법에 대해 알아보도록 할게요! 여러분들의 이해를 돕기 위해 test_role이라는 iam role을 생성하여 간단하게 백엔드 테스트를 진행해볼 텐데요. 테스트에서 사용한 테라폼 버전은 0.12.24입니다.

 

 

먼저 aws configure 설정을 한 후에 aws provider를 정의하여 terraform init을 끝냈다는 가정 하에 시작해볼게요! 저희의 포스팅을 계속 보셨던 분들이라면 이 부분은 충분히 혼자 하실 수 있을 거에요!

 

 

1. iam.tf 파일 생성

원하는 코드를 작성하실 수도 있지만 저는 빠른 실습을 위해 https://registry.terraform.io/providers/hashicorp/aws/latest/docs/resources/iam_role docs에 있는 sample 코드를 사용하도록 하겠습니다. 물론 코드는 자유롭게 변경하셔도 됩니다!

resource "aws_iam_role" "test_role" {
  name = "test_role"
  assume_role_policy = jsonencode({
    Version = "2012-10-17"
    Statement = [
      {
        Action = "sts:AssumeRole"
        Effect = "Allow"
        Sid    = ""
        Principal = {
          Service = "ec2.amazonaws.com"
        }
      },
    ]
  })

  tags = {
    tag-key = "tag-value"
  }
}

 

2. s3 버킷 생성

aws console에서 s3 버킷을 생성한 후 bucket policy를 수정해줍니다.

저는 kej-test-backend-terraform 이라는 이름의 버킷을 생성할 건데 여러분은 여러분들만의 고유한 s3를 생성해야 한다는 점 이미 알고 계시죠?

 이렇게 수정이 끝난 버킷 안에 저는 backend > seoul 순으로 폴더를 생성해줄 거에요. 그러면  kej-test-backend-terraform > backend > seoul 이런 식으로 폴더가 만들어졌을 겁니다.

 

 

3. backend.tf 파일 작성

그냥 terraform plan apply를 실행하면 로컬에 tfstate 파일이 저장될 거에요. 그 테라폼 state 파일을 아래의 방식으로 s3에 옮길 수 있답니다.

버킷은 위에서 생성했던 버킷명을 적어주시고, key 값에는 위에서 만들었던 폴더에 terraform.tfstate 같이 적어주시면 됩니다.

terraform {
  backend "s3" {
    bucket         = "kej-test-backend-terraform"
    key            = "backend/seoul/terraform.tfstate"
    region         = "ap-northeast-2"
    profile        = "kej-test"
  }
}

 

4. terraform init, terraform apply 후 버킷 확인

위에서 설정했던 seoul 폴더 안에 terraform.tfstate 파일이 생성된 것을 확인할 수 있습니다.

 

이런 식으로 tfstate를 따로 관리하는 방법이 있다는 점 참고해주시고, 다음 시간에 찾아올 때는 다른 백엔드 사용법에 대해 알려드리도록 하겠습니다!

 

 

 

 

 

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

terraform backend 설정 - local  (0) 2022.12.22
Scouter 모니터링  (0) 2022.12.21
wsl2로 terraform VScode 환경 구축하기 (1)  (0) 2022.12.16
Terraform target이란  (2) 2022.12.15
Nginx upstream에 대해 알아보자 (Nginx + Tomcat)  (0) 2022.12.02

댓글