반응형
https://youtu.be/16qs7LJSyps?si=SK1HvENWtcuePAEY
terraform에서 3,000가지가 넘는 provider를 구분해서 provisioning할 수 있는 이유 -> Provider 때문.
- Plugin 같은 건데, RPC로 terraform core와 통신하고 / 필요한 resource, data source를 가져올 수 있게 한다.
- Target API와 https로 통신할 수 있는 Go Client Library를 사용.
How to Create a Provider?
보통 목적은 세 가지일 것.
- Update Existing Provider
- 기능 추가, 버그 수정 등... for Contribute
- 단, 오늘 소개하는 프레임워크는 SDKv2인 최신 버전이라서 약간 다를 수 있다. 로직 자체는 크게 다르지 않으니까 괜찮을 거임
- Creating new Provider
- Custom Provider (for internal Application in private cloud)
시나리오
- IaC 코드를 작성해서
- HashiCups라는 샘플 서비스 - provisioning coffee - 를 구현한다.
코드 구조 설명
- main.go: EntryPoint. terraform core와 RPC 통신하기 위한 서버
- resources / datasources file: provision 대상이 되는 리소스
Provider 관련 내용
- Golang, Terraform, Provisioning할 리소스가 있는 Target API와 Client Library가 필요하다.
- client library로 low-level stuff (connect, authenticate...) 처리한다.
- Provider Framework은 hashicorp에서 제공한다.
- Provider Scaffolding: boilerplate 예시.
예시 문서: https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework
cf. new Framework (SDKv2)의 장점?
- write your providers in a more consistent way (complex 로직)
- handling data types (primitive / your custom types)
- validation
- generating documentations / unit test 쉬워짐
이후 Hands On 따라해본 히스토리: https://github.com/inspirit941/terraform-provider-hashicups
반응형