프로바이더 — 클라우드와 소통하는 다리

프로바이더 — 클라우드와 소통하는 다리

Terraform이 AWS나 Azure 같은 클라우드를 관리할 수 있는 건, Terraform 대신 실제 API와 소통하는 누군가가 있어서예요. 그게 바로 프로바이더(provider)예요. 프로바이더는 클라우드 제공자, SaaS, 그리고 다양한 API와 상호작용하는 플러그인이에요. 구성은 반드시 어떤 프로바이더가 필요한지 선언해야 Terraform이 설치하고 쓸 수 있어요.

출처: https://developer.hashicorp.com/terraform/language/providers

본문

프로바이더가 하는 일

각 프로바이더는 Terraform이 관리할 수 있는 리소스 타입데이터 소스를 추가해요. 모든 리소스 타입은 어떤 프로바이더가 구현하며, 프로바이더가 없으면 Terraform은 어떤 인프라도 관리할 수 없어요.

대부분의 프로바이더는 특정 인프라 플랫폼(클라우드든 자체 호스팅이든)을 구성해요. 프로바이더가 로컬 유틸리티를 제공하는 경우도 있어요. 예를 들어 유니크한 리소스 이름을 만들 때 쓸 난수를 생성하는 식으로요.

프로바이더는 어디서 오나

프로바이더는 Terraform 자체와는 별개로 배포되고, 각자 자신의 릴리스 주기와 버전 번호를 가져요. Terraform Registry가 공개 프로바이더의 주요 디렉터리이고, 대부분의 주요 인프라 플랫폼 프로바이더를 호스팅해요.

프로바이더 문서

각 프로바이더는 자신의 리소스 타입과 인자를 설명하는 문서를 따로 갖고 있어요. Registry에는 HashiCorp가 개발한 프로바이더뿐 아니라 서드파티 벤더와 커뮤니티가 만든 프로바이더 문서도 있어요. 프로바이더 헤더의 "Documentation" 링크로 그 문서를 볼 수 있어요. Registry의 프로바이더 문서는 버전별로 관리되므로, 헤더의 버전 메뉴로 보고 싶은 버전을 바꿀 수 있어요.

프로바이더 사용법

프로바이더는 Terraform과 별개로 릴리스되고 자체 버전 번호를 가져요. 운영 환경에서는 구성의 프로바이더 요구사항 블록에서 허용 버전을 제한하는 걸 권장해요. 그래야 terraform init이 구성과 호환되지 않는 더 새로운 프로바이더 버전을 설치하지 않아요.

특정 프로바이더의 리소스를 쓰려면 구성에 그에 대한 정보를 담아야 해요. 자세한 내용은 다음 페이지를 보세요.

프로바이더 설치

  • HCP Terraform과 Terraform Enterprise는 매 실행마다 프로바이더를 설치해요.
  • Terraform CLI는 작업 디렉터리를 초기화할 때 프로바이더를 찾아 설치해요. Terraform 레지스트리에서 자동으로 다운로드하거나, 로컬 미러나 캐시에서 불러올 수 있어요. 지속적으로 쓰는 작업 디렉터리라면 구성의 프로바이더를 바꿀 때마다 다시 초기화해야 해요.

시간과 대역폭을 아끼려면 Terraform CLI가 선택적 플러그인 캐시를 지원해요. CLI 구성 파일plugin_cache_dir 설정으로 캐시를 켤 수 있어요.

구성에 대해 항상 같은 프로바이더 버전을 설치하려면 Terraform CLI로 의존성 잠금 파일을 만들고 구성과 함께 버전 관리에 커밋하면 돼요. 잠금 파일이 있으면 HCP Terraform, CLI, Enterprise 모두 설치할 때 그 파일을 따라요.

프라이빗 프로바이더

HashiCorp가 호스팅하는 레지스트리에 없는 프로바이더를 쓴다면, 외부 레지스트리에 요청할 때 추가 자격 증명을 붙여야 할 수 있어요. 프로바이더가 Terraform 공개 레지스트리나 HCP Terraform 프라이빗 레지스트리에 있다면 그런 자격 증명은 필요 없어요.

기본적으로 Terraform은 프로바이더에서 레지스트리로 보내는 첫 요청만 인증해요. 레지스트리는 프로바이더를 다운로드하라는 지시나 SHASUMS 파일 같은 후속 URL로 응답하죠. HashiCorp 호스트 레지스트리는 이런 후속 요청에 추가 인증을 요구하지 않아요. 만약 레지스트리가 후속 요청에 추가 자격 증명을 요구한다면 .netrc 파일로 그 자격 증명을 제공할 수 있어요.

기본적으로 Terraform은 HOME 디렉터리에서 .netrc 파일을 찾아요. NETRC 환경 변수를 설정하면 기본 파일시스템 위치를 바꿀 수 있어요. .netrc 형식에 대한 자세한 내용은 curl 문서를 참고하세요.

프로바이더 찾는 법

쓰는 인프라 플랫폼의 프로바이더를 찾으려면 Terraform Registry의 프로바이더 섹션을 둘러보면 돼요.

Registry의 프로바이더 중 일부는 HashiCorp가, 일부는 플랫폼 유지보수자가, 또 일부는 사용자와 자원봉사자가 개발·배포해요. 프로바이더 목록의 배지로 누가 개발·유지보수하는지 알 수 있어요.

등급(Tier) 설명 네임스페이스
Official HashiCorp가 소유·유지보수하는 공식 프로바이더 hashicorp, IBM, IBM-Cloud, ansible
Partner Premier 파트너 프리미어 자격을 갖춘 서드파티 기업이 작성·유지보수 서드파티 조직
Partner 서드파티 기업이 자체 API에 맞춰 작성·검증·배포 서드파티 조직
Community 개인 유지보수자, 그룹, 또는 Terraform 커뮤니티 구성원이 배포 유지보수자의 개인·조직 계정 (예: DeviaVir/gsuite)
Archived 더 이상 유지보수되지 않는 Official 또는 Partner 프로바이더 hashicorp 또는 서드파티

프로바이더 개발

프로바이더는 Go로 작성되고 Terraform Plugin SDK를 사용해요. 프로바이더 개발에 대한 자세한 내용은 플러그인 개발 문서와 Terraform 프로바이더로 API 호출하기 튜토리얼을 보세요.

더 알아보기