공부하고 기록하는, 경제학과 출신 개발자의 노트

강연

HashiConf 2023 - Create a Terraform provider with the Plugin Framework

inspirit941 2023. 12. 29. 13:04
반응형

https://youtu.be/16qs7LJSyps?si=SK1HvENWtcuePAEY

 

스크린샷 2023-12-26 오전 10 54 31스크린샷 2023-12-28 오후 2 29 45



terraform에서 3,000가지가 넘는 provider를 구분해서 provisioning할 수 있는 이유 -> Provider 때문.

  • Plugin 같은 건데, RPC로 terraform core와 통신하고 / 필요한 resource, data source를 가져올 수 있게 한다.
  • Target API와 https로 통신할 수 있는 Go Client Library를 사용.

How to Create a Provider?

스크린샷 2023-12-28 오후 2 32 31



보통 목적은 세 가지일 것.

  • Update Existing Provider
    • 기능 추가, 버그 수정 등... for Contribute
    • 단, 오늘 소개하는 프레임워크는 SDKv2인 최신 버전이라서 약간 다를 수 있다. 로직 자체는 크게 다르지 않으니까 괜찮을 거임
  • Creating new Provider
  • Custom Provider (for internal Application in private cloud)

스크린샷 2023-12-28 오후 2 35 45



시나리오

  • IaC 코드를 작성해서
  • HashiCups라는 샘플 서비스 - provisioning coffee - 를 구현한다.

스크린샷 2023-12-28 오후 2 37 14

 

스크린샷 2023-12-28 오후 2 38 42



코드 구조 설명

  • 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

 

Custom Framework Providers | Terraform | HashiCorp Developer

In these tutorials, learn how Terraform uses providers to interact with target APIs. Then, build a custom provider based on the new Terraform Plugin Framework.

developer.hashicorp.com

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

 

GitHub - inspirit941/terraform-provider-hashicups

Contribute to inspirit941/terraform-provider-hashicups development by creating an account on GitHub.

github.com

 

반응형