terraform
에서 가장 중요한 것은 terraform.tfstate 파일이다. 테라폼으로 작성된 파일들의 변경사항이 기록되며 이 파일을 기준으로 프로비저닝 된다.
terraform.tfstate 파일을 어디에서 관리할 것인지 정하는 개념이다. 아무런 설정을 하지 않으면 기본값으로 내가 작업하는 PC가 상태파일의 저장소가 된다.
여러 사람과 협업을 해야하는 경우 내 PC에서 상태 관리를 하는 것은 적합하지 않다. 그렇기 때문에 특정 공간에서 상태 파일을 공유하고 관리해야 한다.
상태 파일의 공유는 다양한 방법이 있지만 그중 하나인 AWS S3를 활용한 방법을 간단하게 알아보자
# backend.tf
terraform {
backend "s3" {
bucket = "mybucket"
key = "path/to/my/key"
region = "us-east-1"
}
}
AWS와 연동 설정 이후 위와 같이 코드를 작성하고 terraform apply
를 하게 되면 S3에 상태 파일이 저장된다.
코드 몇줄로 원격으로 상태관리가 다 된 것처럼 보이지만 보안을 강화하는 것은 또 다른 일이다. 접근할 수 있는 권한 및 암호화 방법을 적절하게 선택해야 한다.
파일을 여러 사람에게 공유하는만큼 보안의 관점에서 위험에 노출될 확률이 크기 때문에 꼭 필요한 대상에게만 공유할 수 있도록 각별히 신경써야 한다.
워크스페이스는 여러 작업 공간을 만들어서 상태파일을 여러 버전으로 관리할 수 있게 해준다.
워크스페이스의 작업공간에 따라 상태파일의 내용 또한 변경되기 때문에 필요한 환경에서 각각의 상태파일을 참조하여 작업할 수 있게 된다.
# 워크스페이스 목록 확인
terraform workspace list
# 신규 워크스페이스 생성
terraform workspace new [name]
# 사용할 워크스페이스 선택
terraform workspace select [name]