본문으로 건너뛰기
로그인 둘러보기
개발·코딩·데이터베이스 · 윈도우즈 유틸

tfoutdated – Terraform Dependency Scanner

0

tfoutdated은 Terraform 의존성을 스캔하고 자동으로 업데이트하는 Go 기반 CLI 도구입니다.

CLI 도구버전 업데이트의존성 관리코드 변환

소개

tfoutdated은 Terraform 의존성을 스캔하고 자동으로 업데이트하는 Go 기반 CLI 도구입니다. AnassKartit이 개발했으며, 버전 업데이트뿐 아니라 변수 이름 변경, 속성 제거, 프로바이더 제약 조건 업데이트 등 코드 수준의 변환을 수행하여 의존성 관리를 완전 자동화합니다. HCL, CDKTF, Terragrunt 프로젝트를 지원하며, AWS, Azure, GCP 등 멀티 클라우드 환경을 대상으로 동작합니다.

상세정보

Scan — 의존성 스캔 및 breaking change 감지

tfoutdated scan 명령은 .tf 파일, cdktf.json, package.json, terragrunt.hcl을 읽어 Terraform Registry에서 최신 버전을 확인하고, 변수 이름 변경, 삭제, 타입 변경 등 breaking change를 감지합니다. 결과를 기본 테이블 형식으로 출력하거나, -o json, -o markdown, –output-file report.html 등으로 다양한 형식으로 저장할 수 있습니다. –full 플래그를 사용하면 breaking change 상세 보고서와 영향 분석을 함께 볼 수 있습니다.

Fix — 자동 업그레이드 및 코드 변환

tfoutdated fix 명령은 버전 업데이트뿐 아니라 모듈 호출 내 변수 이름 변경(예: cluster_name → name), 값 변환(.name → .id), 속성 제거(주석 처리 포함), required_providers 업데이트 등을 한 번에 적용합니다. –dry-run 플래그로 파일 수정 없이 변경 사항을 미리 볼 수 있고, –safe 플래그로 비 breaking 업그레이드만 적용할 수 있습니다.

CDKTF 및 Terragrunt 지원

cdktf.json의 terraformModules 섹션을 읽어 CDKTF 프로젝트의 Terraform Registry 모듈을 스캔하고, fix 명령으로 cdktf.json 내 버전을 직접 업데이트합니다. terragrunt.hcl의 tfr:/// 형태 소스를 인식하여 ?version= 파라미터를 인플레이스로 업데이트합니다. 두 경우 모두 provider 문자열 및 객체 형식의 제약 조건을 지원합니다.

CI/CD 통합

GitHub Actions에서는 tfoutdated 스캔을 단계로 추가해 outdated 의존성 감지 시 실패하도록 설정할 수 있습니다. Azure DevOps에서는 -o azdevops 플래그로 ##vso 명령과 collapsible 섹션을 생성해 파이프라인 로그에 결과를 통합합니다. GitLab CI에서는 Docker 이미지를 사용해 JSON 보고서를 아티팩트로 저장할 수 있습니다.

다운로드·설치 방법

Windows 사용자는 Chocolatey를 통해 choco install tfoutdated 명령으로 설치할 수 있습니다. 또한 GitHub Releases에서 Windows amd64/arm64 빌드된 바이너리를 직접 다운받아 사용할 수 있습니다. cross-platform 설치를 원한다면 Go install (go install github.com/anasskartit/tfoutdated@latest), Homebrew, 또는 제공된 install.sh 스크립트를 사용할 수 있습니다.

기본 사용법/명령어

Terraform 프로젝트 루트에서 tfoutdated scan -p . 를 실행해 현재 디렉터리의 의존성을 스캔합니다. 특정 경로를 지정하려면 -p 인프라/프로덕션 과 같이 경로를 전달합니다. tfoutdated fix -p . 로 모든 outdated 의존성을 자동으로 업데이트하고 코드를 변환할 수 있습니다. 변경 사항을 적용하기 전에 tfoutdated fix –dry-run -p . 로 미리 확인하는 것이 안전합니다. JSON 출력이 필요한 CI 환경에서는 tfoutdated scan -p . -o json 을 사용합니다.

이런 경우에 유용합니다

인프라 코드가 오래된 Terraform 모듈이나 프로바이더를 사용하고 있어 수동으로 버전을 확인하고 코드를 수정하기 어려운 DevOps 엔지니어에게 유용합니다. 특히 변수 이름 변경이나 속성 제거 같은 breaking change가 많은 메이저 버전 업데이트 시, tfoutdated는 코드 수준의 변환을 자동으로 적용해 인프라 배포 실패를 사전에 방지합니다. 여러 환경(prod, staging, dev)의 Terraform 파일을 한 번에 스캔해야 하는 경우 -p 경로1,경로2,경로3 형태로 멀티 경로 스캔을 사용할 수 있습니다.

지원 환경·시스템 요구사항

증거에 명시된 특정 시스템 요구사항은 없습니다. Go로 빌드된 바이너리는 Windows, macOS, Linux에서 실행 가능하며, Chocolatey 패키지는 Windows 전용입니다. Terraform Registry에 접근할 수 있는 네트워크 환경이 필요하며, 스캔 대상 프로젝트에 .tf, cdktf.json, package.json, terragrunt.hcl 중 하나 이상이 존재해야 합니다.

최신 버전·업데이트

현재 버전은 0.2.0이며, 업데이트 내역은 공식 저장소의 CHANGELOG.md 파일을 통해 확인할 수 있습니다. GitHub Releases에서 최신 바이너리를 다운로드하거나, 패키지 관리자(choco upgrade tfoutdated, brew upgrade tfoutdated 등)를 통해 업데이트할 수 있습니다.

제한 사항·확인 사항

tfoutdated은 Terraform Registry에 공개된 모듈과 프로바이더만 지원합니다. private 모듈 레지스트리나 로컬 경로 소스는 스캔 대상이 되지 않을 수 있습니다. breaking change 감지는 지식 기반 규칙과 스키마 딥 비교에 의존하므로, 매우 새로운 버전이나 비공식적인 변경 사항은 즉시 감지되지 않을 수 있습니다. 코드 변환은 HCL 구문을 기준으로 수행되며, 복잡한 조건식이나 동적 블록 내 변환은 완벽하지 않을 수 있습니다.

시스템 요구사항

별도의 시스템 요구사항이 등록되지 않았습니다.