테라폼에는 Local State와 Remote State가 있다.
Local State는 상태를 담은 파일을 local에 남긴다. 파일들이 local에 있기 때문에 이 경우에는 개인작업만 가능하다.
terraform init & terraform apply 명령어를 실행하면 다음과 같은 파일들이 local에 생성된다.
.terraform.* 형태의 파일 : terraform init 명령어를 실행할 때 생성
terraform.tfstate: terraform apply 명령어 실행 후 생성
.terraform.lock.hcl: 잠금 파일이며 경쟁 상태에서 생길 수 있는 문제들을 피할 수 있게 해 줌
Remote State는 원격으로 local이 아닌 다른 곳에 상태를 남긴다.
이를 위해서는 state를 저장하고 관리할 저장공간이 필요하다.
그런 역할을 하는것이 Terraform Backend(State Storage)이다.
Backend의 종류로는 크게 아래와 같다.
Local Backend
Remote Backend (Terraform Cloud)
AWS S3 Backend (with / without DynamoDB)
Backend를 고려할 때 중요한 부분으로는 Locking 기능의 유무이다.
테라폼 상태파일을 원격으로 관리하게 되면 여러 작업자가 상태파일을 관리할 수 있는데 이러다 보면 동시성 이슈가 발생할 수 있기 때문이다.
기본적으로 AWS S3 Backend는 DynamoDB가 없을 때 lock 기능을 제공하지 않는다.
먼저 AWS S3를 이용해서 상태를 저장해보자
https://github.com/tedilabs/fastcampus-devops/blob/main/2-terraform/09-s3-backend/main.tf#L2
GitHub - tedilabs/fastcampus-devops: 🚀 패스트캠퍼스 데브옵스 초격차 코스 자료
🚀 패스트캠퍼스 데브옵스 초격차 코스 자료. Contribute to tedilabs/fastcampus-devops development by creating an account on GitHub.
github.com
다음과 같은 s3 버킷을 만들자
그리고 state 저장소가 변경되는 것이므로 terraform init을 하고 apply를 해야 한다.
이번에는 Terraform Cloud를 이용해보자
우선 아래 사이트에 접속해서 계정을 만들어야 한다.
https://app.terraform.io/session
Terraform Cloud by HashiCorp
app.terraform.io
회원가입을 하고 인증 이메일의 링크로 접속하면 workflow를 골라야 한다. Start form scratch를 선택해서
나만의 새 organization을 만들자
그리고 user settings에서 토큰을 새로 생성한다.
다시 테라폼 코드로 돌아와서 s3가 아닌 remote 환경에 맞게 코드를 수정한다.
Terraform Cloud의 토큰 설정을 하기 위해 vi ~/.terraformrc 명령어를 입력하고 코드를 작성한다.
토큰 값은 아까 생성한 값을 붙여넣는다.
init을 하면 새 workspace가 생성된 걸 볼 수 있다.
workspace 설정에서 general settings로 들어가서 execution mode를 local로 변경하고 terraform apply를 한다.
그럼 어떤 리소스가 있는지 상태가 어떻게 변했는지 확인할 수 있다.
'AWS > Part 4. Ch02 테라폼을 이용한 인프라 관리' 카테고리의 다른 글
CH02_12. 테라폼 리소스 강제 교체하기 (taint & untaint) (0) | 2022.06.03 |
---|---|
CH02_11. 테라폼 상태 관리 (0) | 2022.06.03 |
CH02_09. 테라폼 HCL 반복문(For) (0) | 2022.06.02 |
CH02_08. 테라폼 HCL 조건문 (0) | 2022.06.02 |
CH02_07. 테라폼 HCL count와 for_each (0) | 2022.06.02 |