R&D/클라우드

ktcloud terraform provider 개발

sunshout 2025. 3. 15. 01:07

샘플 코드 클론

git clone https://github.com/hashicorp/terraform-provider-scaffolding-framework

git repo 이름 변경

mv terraform-provider-scaffolding-framework terraform-provider-ktcloud

go.mod 파일에서 module 명 변경

go mod edit -module terraform-provider-ktcloud

go mod tidy 명령어는 Go 모듈의 의존성 목록을 정리하고 최적화하는 역할을 합니다

gmo mod tidy

main.go 파일에서 import 수정

// Copyright (c) HashiCorp, Inc.
// SPDX-License-Identifier: MPL-2.0

package main

import (
    "context"
    "flag"
    "log"

    "github.com/hashicorp/terraform-plugin-framework/providerserver"
    "terraform-provider-ktcloud/internal/provider"
)

 

Terraform에서 provider, datasource, resource는 인프라를 코드로 관리할 때 핵심적인 역할을 합니다. 각각을 쉽게 설명하면 다음과 같습니다.

  • Provider (프로바이더)
    • 역할: 특정 클라우드나 서비스(예: AWS, Azure, Google Cloud, 혹은 커스텀 API 등)와의 연결 역할을 담당합니다.
    • 예시: AWS 프로바이더는 AWS API와 통신하여 인프라를 관리할 수 있도록 지원합니다.
  • Datasource (데이터 소스)
    • 역할: 외부 시스템에서 읽기 전용 데이터를 가져옵니다.
    • 예시: 기존에 생성된 VPC 정보나 AMI ID를 조회하여 Terraform 구성에 활용할 수 있습니다.
    • 특징: 데이터 소스는 값을 읽기만 하며, 직접적으로 변경하거나 생성하지 않습니다.
  • Resource (리소스)
    • 역할: Terraform이 생성, 업데이트, 삭제 등 상태 관리를 할 수 있는 인프라 구성 요소입니다.
    • 예시: EC2 인스턴스, S3 버킷, 데이터베이스 인스턴스 등이 이에 해당합니다.
    • 특징: 선언한 상태에 맞춰 외부 인프라의 생성, 변경, 삭제를 자동으로 수행합니다.

요약하자면,

  • Provider는 외부 시스템과의 연결을 관리하고,
  • Datasource는 외부 데이터를 조회하는 역할을,
  • Resource는 외부 인프라 구성 요소를 생성하고 관리하는 역할을 합니다.

 

참고

https://developer.hashicorp.com/terraform/plugin

 

Plugin development | Terraform | HashiCorp Developer

Learn how to design, develop, and test plugins that connect Terraform to external services.

developer.hashicorp.com

https://developer.hashicorp.com/terraform/tutorials/providers-plugin-framework/providers-plugin-framework-provider

 

Implement a provider with the Terraform Plugin Framework | Terraform | HashiCorp Developer

Begin creating a custom provider using the Terraform Plugin Framework.

developer.hashicorp.com

 

github repo: https://github.com/terraform-provider-openstack/terraform-provider-openstack

 

GitHub - terraform-provider-openstack/terraform-provider-openstack: Terraform OpenStack provider

Terraform OpenStack provider. Contribute to terraform-provider-openstack/terraform-provider-openstack development by creating an account on GitHub.

github.com

 

728x90