IBM Cloud에서 tfstate 파일 관리하기

 

이 글은 다음 글을 번역하여 포스팅하였습니다.
Link : https://github.com/l2fprod/serverless-terraform-backend

Terraform은 다양한 backend types를 제공합니다. 그 중 http 백앤드 방식은 REST Client 를 사용하여 Terraform states 파일을 저장합니다.

이 프로젝트는 IBM의 서버리스 IBM Cloud FunctionsIBM Cloud Object Storage를 Terraform states의 REST beckend로 사용하여 optional state lockingversioning 기능을 구현하였습니다.

Cloud Object Storage 생성

1. IBM Cloud console에 접속하여 Cloud Object Storage 서비스를 생성합니다.

2. Terraform states가 저장될 bucket을 생성합니다.
Create Bucket

3. 서비스 Credential을 생성합니다.
Create Credential

4. 원하시는 지역의 API endpoint를 기억해둡니다.
API Endpoint

서버리스 백엔드 생성

5. git clone 명령어를 통해 파일을 내려받습니다.
git clone https://github.com/l2fprod/serverless-terraform-backend.git

6. actions/template.local.env 파일을 actions/local.env 로 복사합니다.

cp actions/template.local.env actions/local.env

7. actions/local.env를 텍스트 에디터로 열어 Cloud Object Storage의 Credential을 작성한 뒤 저장합니다.

8. 기 정의된 서버리스 백앤드의 action을 배포합니다.

cd actions
./deploy --install

9. API Gateway를 통해 해당 Action을 Expose 합니다.

cd actions
./deploy --installApi

10. API Gateway endpoint를 기억해둡니다. 아래 링크와 유사합니다. https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/abcdefabecdef0192837465/terraform/1/backend

Terraform 설정

11. terraform/backend.tf을 편집합니다.

12. address를 API Gateway endpoint로 작성합니다.

주소의 query 매개 변수를 사용하여 해당 state 파일에서 env 이름을 설정하거나 versioning을 사용하도록 설정합니다. 예를 들어 이 주소는 us/south/staging을 키로 사용하여 상태를 유지하고 versioning을 합니다.: https://service.us.apiconnect.ibmcloud.com/gws/apigateway/api/abcdefabecdef0192837465/terraform/1/backend?env=us/south/staging&versioning=true

13. 만약 locking을 원하신다면 lock_addressunlock_address의 주석을 삭제하신 뒤, address에 입력한 값을 동일하게 작성합니다.

14. password는 Cloud Object Storage의 apikey로 작성합니다. Cloud Object Storage의 Credential에서 확인 가능합니다.

15. 저장

Terraform을 통해 저장하기

16. Terraform init 명령어를 입력합니다.

cd terraform
terraform init

17. terraform plan 명령어를 실행합니다.

terraform plan

18. terraform Apply 명령어를 통해 변경 사항을 적용합니다.

terraform apply

19. 위에서 설정한 Bucket을 Cloud Object Storage의 대쉬보드에서 확인해 보면, Terraform state 파일이 생성된 것을 확인할 수 있습니다.

20. main.tf 내용을 변경하여 적용합니다.

21. Terraform Plan

terraform plan

22. Terraform Apply

terraform apply

 

License

This project is licensed under the Apache License Version 2.0 (http://www.apache.org/licenses/LICENSE-2.0).

토론 참가

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다