OpenTofu ORAS Backend: GitHub Container Registry (GHCR)에서 상태 저장
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 등)