Terraform의 상태 저장소로는 기본적으로 Local State / Remote State가 있다.
그리고 상태를 저장하는 공간인 Backend(State Storage)가 있다.
디렉토리 상에서 terraform apply를 실행하고 나면 terrafrom.tfstate라는 파일이 Local에 만들어 지게 되는데 Local File System에 남기 때문에 Local State라고 부른다.
또한 Local에서 진행되기 때문에 개인작업만 가능하다.
상태를 Local이 아닌 원격저장소에 남기는 경우 해당 상태를 Remote State라고 부른다.
State를 저장하고 관리해 주는 상태 저장소가 필요한데 이 저장소를 Backend(State Storage)라고 부른다.
Baceknd 종류
- Local Backend
- Remote Backend(Terraform Cloud)
- AWS S3 Backend (with (Lock O) / without (Lock X) DynamoDB)
Remote State를 사용하게 되면 여러 작업자가 해당 상태 파일에 붙어서 같은 WorkSpace를 관리하게 된다.
하지만 동시 다발적으로 여러 작업자가 작업을 하게 될 때 동시성 이슈가 발생할 수 있다.
ex) 한 작업자는 State-1을 만들고 한 작업자는 State-2를 만든다고 가정했을 때 두 작업자가 동시에 terraform apply를 실행하게 되면 충돌이 발생하게 된다.
따라서 이러한 동시성 문제를 방지하기 위해 Locking이 존재한다.
Locking 덕분에 두 작업자가 동시에 terraform apply를 실행하더라도 한 작업자에게 실행 권한을 주고 Lock을 걸면 다른 작업자는 실행이 되지 않는다.
terraform {
backend "s3" {
bucket = "버킷 이름"
key = "상태가 저장될 위치"
region = "지역"
}
}
terraform {
backend "remote" {
hostname = "app.terraform.io"
organization = "organization 이름"
workspaces {
name = "workspace 이름"
}
}
}