본문 바로가기
Infra2026년 5월 12일5분 읽기

OpenTofu 1.10 — Terraform 포크의 1년, 마이그레이션·기능 격차

YS
김영삼
조회 937
OpenTofu 1.10 — Terraform 포크의 1년, 마이그레이션·기능 격차

핵심 요약

2025년 라이선스 변경으로 Terraform에서 갈라진 OpenTofu가 1.10(2026-04) 기준 안정화. 사내 IaC를 6개월에 걸쳐 OpenTofu로 옮긴 회고와 결정 기준.

1. 왜 옮겼나

  • BSL(business source license)로 사내 자동화 모호함 회피
  • state file 암호화 (Terraform 미지원)
  • 대시보드·도구가 모두 OSS — 폐쇄적 의존 줄임
  • 요청 PR 머지 평균 9일 (TF는 60일+)

2. 격차 요약 — 2026-05 기준

기능Terraform 1.10OpenTofu 1.10
모듈·프로바이더 문법OO (호환)
state 암호화XO (네이티브)
Dynamic Provider 구성XO (1.8+)
Provider iterationXO
Cloud / StacksO (HCP Terraform)X (Spacelift 등 외부)
Sentinel 정책OX (대신 OPA·Conftest)

3. state 암호화 — 가장 큰 이득

terraform {
  encryption {
    key_provider "aws_kms" "default" {
      kms_key_id = "arn:aws:kms:..."
    }
    method "aes_gcm" "secure" {
      keys = key_provider.aws_kms.default
    }
    state { method = method.aes_gcm.secure }
    plan  { method = method.aes_gcm.secure }
  }
}

S3 백엔드에 평문으로 떠있던 시크릿이 사라짐. 감사·컴플라이언스에서 가장 단단한 변화.

4. Dynamic Provider Configuration

같은 리전·계정 여러 개를 for_each로:

provider "aws" {
  for_each = var.regions    # ["us-east-1", "eu-west-1"]
  alias  = each.key
  region = each.key
}

resource "aws_s3_bucket" "logs" {
  for_each = var.regions
  provider = aws[each.key]
  bucket   = "logs-${each.key}"
}

Terraform에서 alias 일일이 쓰던 코드가 사라진다.

5. 마이그레이션 단계 — 실제 진행

1단계: tfenv → 둘 다 설치

tofuterraform 양쪽으로 같은 코드를 plan. diff 없으면 OK.

2단계: CI에서 tofu plan 추가

main에서 terraform·tofu plan을 모두 돌려 비교. 1주간 차이 없으면 다음.

3단계: apply는 tofu

state는 호환. 한 번 tofu apply 하면 자동으로 작동. 롤백 시엔 terraform으로 돌아가도 OK.

4단계: 코드에 OpenTofu 전용 기능 도입

state encryption, dynamic provider 등 — 이 시점부터 Terraform 호환 깨짐 (의도된).

6. 함정

① state 락

두 도구가 동시에 같은 state 만지면 락 충돌. 마이그레이션 기간엔 한쪽으로 통일.

② HCP Terraform Cloud

SaaS 사용자라면 OpenTofu로 직행 못 함. Spacelift·env0·Scalr 같은 대안 검토.

③ 일부 모듈 (community)

특정 모듈이 terraform_version을 enforced하는 경우 호환 안 됨. 모듈 fork 또는 issue.

④ provider tooling

대부분 동일 plugin 사용. 단, 일부 closed provider는 OpenTofu 명시 인증 필요.

7. 운영 도구

도구지원
AtlantisOpenTofu 명시 지원
SpaceliftOpenTofu·Terraform 동시
env0OpenTofu 지원
TerragruntOpenTofu 호환

8. 실측 — 사내 IaC

지표Terraform 1.5 (라이선스 변경 전)OpenTofu 1.10
plan 시간 (700 리소스)62s56s
state 크기4.1MB4.2MB (암호화 오버헤드)
provider 다운로드완료까지 동등등록 미러 별도

9. 결정 가이드

  • HCP Terraform 깊이 사용 중 → 그대로
  • state encryption 필요 → OpenTofu
  • OSS 라이선스가 비즈니스 위험 → OpenTofu
  • 커뮤니티 속도 우선 → OpenTofu

참고

  • opentofu.org/docs/intro/whats-new
  • github.com/opentofu/opentofu/releases/tag/v1.10.0

댓글 0

아직 댓글이 없습니다.
Ctrl+Enter로 등록