OpenTofu ORAS Backend: GitHub Container Registry (GHCR)에서 상태 저장

발행: (2025년 12월 28일 오후 05:52 GMT+9)
3 분 소요
원문: Dev.to

Source: Dev.to

소개

OpenTofu 1.10은 공급자에 대한 OCI 지원을 추가했지만, 상태 저장소에 대해서는 다루지 않았습니다.
많은 프로젝트에서 S3 + DynamoDB(잠금용)로 153 MB tfstate를 관리하는 것은 과도한 경우가 많으며, 특히 팀이 이미 다음을 사용하고 있다면 더욱 그렇습니다:

  • OCI 레지스트리(예: GHCR)
  • Terraform 코드를 배포하는 GitHub Actions

아래 포크는 상태를 OCI 아티팩트(콘텐츠 주소 지정)로 저장하는 ORAS 백엔드를 네이티브하게 제공합니다.

ORAS 백엔드 설정

terraform {
  backend "oras" {
    repository  = "ghcr.io/org/project-state"
    compression = "gzip"

    versioning {
      enabled      = true
      max_versions = 5
    }
  }
}

암호화 (선택 사항)

terraform {
  backend "oras" {
    repository = "ghcr.io/my-org/tf-state"
  }

  encryption {
    key_provider "pbkdf2" "main" {
      passphrase = var.state_passphrase
    }
    method "aes_gcm" "main" {
      key_provider = key_provider.pbkdf2.main
    }
    state {
      method = method.aes_gcm.main
    }
  }
}

설치

# Installs as `tofu-oras`
curl -sSL https://raw.githubusercontent.com/vmvarela/opentofu/develop/install.sh | sh

소스에서 빌드하기

git clone https://github.com/vmvarela/opentofu
cd opentofu
go build -o tofu-oras ./cmd/tofu

전체 문서

자세한 사용 방법은 ORAS Backend README를 참고하세요.

사용 사례

  • 인프라를 최소화하려는 스타트업
  • 개인 또는 사이드 프로젝트(무료 GHCR 티어)
  • 레지스트리 미러를 이용한 에어갭 환경
  • 이미 OCI 생태계에 투자한 팀
  • 멀티 클라우드 프로젝트

향후 계획 (커뮤니티 관심이 높아지면)

  • 테스트 커버리지 향상
  • 다양한 시나리오에 대한 예제 추가
  • GHCR 외 다른 OCI 레지스트리와의 테스트

커뮤니티 피드백

어떻게 생각하시나요? S3 대신 OCI 레지스트리에 상태를 저장하시겠습니까? 이 접근 방식을 채택하려면 어떤 기능이 필요하신가요?

레포지토리: (branch/tag v1.11.2-oras 등)

Back to Blog

관련 글

더 보기 »