Back
🔐
VPN 자동화 프로젝트
Overview
- 기간
- 2025.01 – 2025.06
- 팀원
- 2명
- 역할
- Ansible/Python 자동화 코드 작성
- 주최처 / 발주처
- SK브로드밴드
- 활용 기술
- PythonJira APIAnsiblePostgreSQL
- 프로젝트 설명
- 관리자가 수동으로 처리하던 사내 구성원들의 VPN 계정 활성화/비활성화 업무를 자동화한 프로젝트입니다. VPN 장비 계정 활성화/비활성화, 결과 댓글 기록, 60분 주기 이메일 발송, 일일 Excel 보고서 생성까지 전 과정을 Ansible 자동화 서버 기반으로 구성했습니다. 해당 시스템을 통해 월 5,000건 이상의 VPN 권한 처리 업무를 자동화했습니다.
Architecture

Architecture Decisions
- 1
Jira Webhook 기반 이벤트 자동화
관리자가 Jira Issue를 '승인'으로 전환하는 시점에 Webhook이 발생하도록 설정했습니다. Ansible 서버가 Webhook을 수신해 신청 정보를 DB에 저장하고, 스케줄러가 VPN 장비 API를 호출해 계정을 처리도록 구현했습니다.
- 2
HAProxy를 통한 Webhook 라우팅 분리
/rest 경로로 들어오는 Webhook 요청을 HAProxy에서 별도 백엔드(b_rest)로 분기하여 일반 웹 트래픽과 Webhook 처리를 분리했습니다.
- 3
VPN 장비별 자동화 로직 커스텀
VPN 장비마다 API 명세와 처리 방식이 달라 이슈 타입에 따라 파싱 로직과 유효성 검증을 분리했습니다. 장비 A는 계정명/시간 기반으로 처리하고, 장비 B는 IP 주소 유효성 검증(공인 IP 여부, 옥텟 범위 등)을 추가로 수행하는 등 고객사 담당자와의 협의를 통해 여러 장비에 적용할 수 있었습니다.
Troubleshooting
- 1
Webhook 호출 시 404 Not Found 발생
Spring Boot에서 Jira Webhook API는 /rest/webhook 경로로 구현되어 있었지만, haproxy.cfg에 /rest 경로에 대한 ACL 라우팅이 없어 모든 요청이 웹서버 백엔드로 전달되고 있었습니다. haproxy.cfg에 'acl is_rest path_beg /rest → use_backend b_rest' 규칙을 추가하여 /rest 경로에 대한 요청이 API용 서버로 라우팅되도록 수정했습니다.