728x90
728x90
참조
- 책 Terraform Up & Running
- 코드 : github.com/stitchlabio/terraform-up-and-running-code
- terraform101.inflearn.devopsart.dev/advanced/backend/
- 이전 글 : 테라폼 backend의 이해
Requirements
- S3, DynamoDB 권한이 있는 IAM User
목차
1. S3 버킷, DynamoDB 테이블 생성
2. Backend 설정
1. S3 버킷, DynamoDB 테이블 생성
테라폼의 상태를 저장하기 위한 S3 Bucket과 Lock을 걸기 위한 DynamoDB 테이블을 생성해 보겠다
resources.tf
provider "aws" {
region = "us-east-1"
}
resource "aws_s3_bucket" "terraform_state" {
bucket = "terraform-haejang(버킷이름)"
versioning {
enabled = true
}
}
resource "aws_dynamodb_table" "terraform_lock" {
name = "terraform-lock(테이블이름)"
hash_key = "LockID"
read_capacity = 1
write_capacity = 1
attribute {
name = "LockID"
type = "S"
}
}
S3
bucket
: 버킷의 이름. 전 세계적으로 고유한 값이어야 함versioning
: 버저닝을 수행할지 여부. enable된 상태라면 버킷에 있는 파일을 업데이트할 때 마다 해당 파일의 새 버전이 만들어지며, 이를 통해 언제든지 이전 버전으로 되돌릴 수 있다- 추가적으로
lifecycle
속성의 prevent_destroy 를 사용해 버킷 삭제에 대한 보호를 활성화할 수 있다
DynamoDB
name
: 데이터가 저장되는 테이블 이름. 각 계정의 지역별로 고유한 값이어야 함hash_key
: 테이블의 각 항목을 나타내는 고유 식별자. LockID가 기본 키가 된다read/write_capacity
: 읽기/쓰기 용량 => 비용 결정attribute
: 속성, 필드. 테라폼에서는 LockID가 잠금을 위한 하나의 속성이다 (타입은 String)
terraform init, plan, apply 명령을 내리면콘솔에서 S3 버킷과 DynamoDB 테이블이 생성된걸 확인할 수 있다
2. Backend 설정
생성된 S3 버킷과 DynamoDB를 사용하도록 backend 설정을 해보겠다
backend.tf
terraform {
backend "s3" {
bucket = "terraform-haejang(S3버킷이름)"
key = "terraform.tfstate"
region = "us-east-1"
encrypt = true
dynamodb_table = "terraform-lock(DynamoDB테이블이름)"
}
}
백엔드 설정이 추가되거나 바뀌면 terraform init
을 또 실행시켜야 한다
아무튼 init을 수행하고 apply까지 마치면
S3 버킷에 현재 상태 정보가 들어있는 terraform.tfstate 파일이 저장되어 있는 것과, DynamoDB에서 테라폼이 상태 파일 잠금 수행 중일 때 임시로 기록되는 정보도 확인할 수 있다
terraform.tfstate
파일을 다운받아 현재 상태 확인도 해보자
끝
728x90
728x90
'공부 > IaC' 카테고리의 다른 글
[Terraform on AWS] VPC, Subnet Module 만들어서 사용하기 (0) | 2021.03.24 |
---|---|
[Terraform on AWS] 간단한 VPC 구성 & 웹서버용 EC2 생성하기 (0) | 2021.03.23 |
[Terraform] 테라폼 backend의 이해 (0) | 2021.03.19 |
[Terraform on AWS] 테라폼 채움 참조, 변수(variable), output 사용 (0) | 2021.03.19 |
[Terraform on AWS] 테라폼 입문 (in Window) (0) | 2021.03.15 |
댓글