Terrafom Backend 활용하기

운영하는은영이·2023년 1월 24일
0

AWS&Terraform

목록 보기
10/11

terraform state

현재 인프라의 상태 X , 이 코드를 적용한 시점의 상태
state는 원격 저장소인 backend에도 저장될 수 있음

Terraform Backend

개념

Terraform Backend란?

: Terraform의 state 파일을 어디에 저장하고 가져올지에 대한 설정
: 기본적으로는 로컬스토리지 설정에 따라 s3, consul(hashicorp의 솔루션), etcd등 다양한 백엔드 타입 사용 가능

테라폼 사용 이유

  • Locking : 현업에서 인프라를 만들 때는 규모가 매우 크기 때문에 테라폼 코드를 대부분 여러 사람이 같이 작성 => 원격 저장소를 사용함으로써 동시에 작업을 하는 등

  • Backup : 로컬 스토리지에 저장 시 유실 가능성이 있음-> s3같은 원격 저장소를 사용함으로써 state 파일의 유실을 방지

실습

  1. init.tf 생성
    • s3 생성
      Terraform의 상태를 저장하기 위해 생성.
      s3 사용 이유 : SLA이 보장되고, 접근하기가 쉽고, versioning 지원
    • DynamoDB 생성
      동시에 같은 파일을 수정하지 못하도록 DynamoDB 작업에 대한 Lock 생성
      ( DynamoDB : AWS에서 제공하는 NoSQL key/value 데이터베이스. 확장성이 좋음 )
provider "aws" {
  region = "ap-northeast-2"
  version = "~> 2.49.0"
}

resource "aws_s3_bucket" "tfstate" {
  bucket = "tf101-eunyoung-tfstate"

  versioning {
    enabled = true
  }
}

resource "aws_dynamodb_table" "terraform_state_lock" {
  name = "terraform-lock"
  hash_key = "LockID"
  billing_mode = "PAY_PER_REQUEST"

  attribute {
    name = "LockID"
    type = "S"
  }
}
  1. terraform init

  2. terraform plan

  3. terraform apply

  4. backend 설정하기

     terraform {
       backend "s3" {
        bucket = "tf101-eunyoung-tfstate"
        key = "/iam/terraform.tfstate "
        region = "ap-norheast-2"
        encrypt = true
        dynamodb_table = "terraform-lock"
       }
     }
    • bucket에 state 파일 저장할 s3 버킷 이름
    • key에 s3 내에서 저장되는 경로 지정해주기
    • dynamodb_table에 init.tf에서 생성한 dynamodb 이름 지정
  1. aws 콘솔에서 DynamoDB 테이블 생성됬는지 확인

  2. terraform init
    -> 로컬에 존재하는 상태 코드들을 s3에 복사. 로컬에 있는거 이제 삭제 가능

profile
ผ(•̀_•́ผ) (ง •_•)ง

0개의 댓글