Terraform와 Proxmox를 활용한 GitOps 자동화
Source: Dev.to
초기 문제
Proxmox에서 VM을 만들 때마다 반복되는 과정이 있었습니다: 웹 인터페이스를 열고, 양식을 채우고, 네트워크를 수동으로 설정하고, VM 생성이 끝날 때까지 기다린 뒤, SSH로 접속해 환경을 구성하는 것이었습니다.
게다가 향후 같은 과정을 다시 실행해야 할 경우 정확히 어떤 단계가 수행됐는지 기억해야 했습니다. 변경 이력도 없고, 일관된 자동화도 없으며, 추적성도 부족했습니다.
스크립트나 Terraform을 사용하더라도 여전히 수동 단계가 남아 있어, 프로세스가 기대보다 오래 걸리고 개선할 부분이 명확했습니다.
해결책: GitOps + Terraform + GitHub Actions
전체 인프라를 Git에 버전 관리되는 코드만으로 관리하는 GitOps 워크플로를 구현했습니다.
그 결과는 매우 인상적이었습니다: 이제는 커밋과 푸시만으로 VM을 생성·수정·삭제할 수 있습니다. 2~3분 정도면 변경 사항이 Proxmox 환경에 자동으로 적용됩니다.
진행하면서 배운 점
모든 것이 간단한 것은 아니었습니다, 특히 처음부터 시작하는 사람에게는요.
저는 이미 이 도구들을 어느 정도 다뤄본 경험이 있기 때문에, Proxmox 권한을 올바르게 설정하고, self‑hosted runner를 로컬 네트워크에 배치하며(Proxmox가 클라우드에서 직접 접근할 수 없기 때문에), 코드를 확장 가능하고 재사용 가능하도록 구조화하는 일은 크게 어려운 작업이 아니었습니다.
그럼에도 각 단계마다 Infrastructure as Code, CI/CD, 자동화 모범 사례와 관련된 학습과 개선의 기회가 있었습니다.
참고: 처음 해보는 사람들을 위해 자세한 단계별 가이드와 FAQ를 제공하여 환경 재현을 쉽게 할 수 있도록 했습니다.
사용 기술
- Terraform – IaC
- GitHub Actions – CI/CD 자동화
- Terraform Cloud (HCP Terraform) – 원격 상태 관리
- Proxmox – 하이퍼바이저
- Self‑hosted runners – 로컬에서 잡 실행
모든 도구는 100 % 오픈소스이며 무료이고, 데이터와 인프라에 대한 완전한 제어를 보장하는 self‑hosted 환경에서 실행됩니다.
실제 영향
| 이전 | 현재 |
|---|---|
| 수동 프로세스·오류 위험·이력 없음으로 VM당 15–20 분 | 코드에 VM 정의 → 커밋·푸시 자동 적용까지 약 30 초, Git을 통한 완전한 추적성 |
시간 절감보다 더 중요한 것은 신뢰성 향상이었습니다. 모든 변경은 리뷰를 거치고 Git 히스토리에 기록되며, git revert 한 줄로 쉽게 되돌릴 수 있습니다. 이는 실험 환경에서 안전하게 되돌릴 수 있는 가능성이 큰 차이를 만들기 때문입니다.
얻은 교훈
- 자동화는 모든 수작업을 없애는 것이 아니라, 반복적이고 오류가 발생하기 쉬운 작업을 줄이는 것입니다.
- Infrastructure as Code는 대기업 전용이 아니라, 홈랩에서도 실험하기에 최적입니다.
- 문서는 코드만큼 중요합니다 – 미래의 ‘나’를 위해 각 단계를 문서화하는 데 시간을 투자했습니다.
- Self‑hosted runner를 사용하면 로컬 환경에서도 자동화 가능성이 크게 확대됩니다.
향후 계획 / 개선점
현재 VM 생성 후 설정을 위해 Semaphore UI를 사용하고 있으므로, Ansible을 통합할 예정이며, 배포 전 자동 테스트도 추가하려고 합니다.
기술 구현 상세와 프로젝트 재현을 원하는 분들을 위해 전체 단계(발생한 모든 문제에 대한 트러블슈팅 포함)는 homelab-infrastructure-template에서 확인할 수 있습니다.