현재 인프라의 상태 X , 이 코드를 적용한 시점의 상태
state는 원격 저장소인 backend에도 저장될 수 있음
: Terraform의 state 파일을 어디에 저장하고 가져올지에 대한 설정
: 기본적으로는 로컬스토리지 설정에 따라 s3, consul(hashicorp의 솔루션), etcd등 다양한 백엔드 타입 사용 가능
Locking : 현업에서 인프라를 만들 때는 규모가 매우 크기 때문에 테라폼 코드를 대부분 여러 사람이 같이 작성 => 원격 저장소를 사용함으로써 동시에 작업을 하는 등
Backup : 로컬 스토리지에 저장 시 유실 가능성이 있음-> s3같은 원격 저장소를 사용함으로써 state 파일의 유실을 방지
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"
}
}
terraform init
terraform plan
terraform apply
backend 설정하기
terraform {
backend "s3" {
bucket = "tf101-eunyoung-tfstate"
key = "/iam/terraform.tfstate "
region = "ap-norheast-2"
encrypt = true
dynamodb_table = "terraform-lock"
}
}
aws 콘솔에서 DynamoDB 테이블 생성됬는지 확인
terraform init
-> 로컬에 존재하는 상태 코드들을 s3에 복사. 로컬에 있는거 이제 삭제 가능