Back
🔐

VPN 자동화 프로젝트

Overview

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

Architecture

Architecture diagram

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용 서버로 라우팅되도록 수정했습니다.