- Flask 기반 웹 제어 패널 구현
- 토글 스위치로 RDP 자동 로그인 제어
- Tailscale IP 기반 접속 정보 표시
- Python venv 환경 사용
- systemd 서비스로 자동 실행
- PBS 자동 등록 스크립트 기획서 추가
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
5.7 KiB
5.7 KiB
Proxmox Backup Server (PBS) 자동 등록 스크립트 기획서
📋 프로젝트 개요
목적
Proxmox VE 호스트에 PBS(Proxmox Backup Server)를 자동으로 등록하고 백업 작업을 구성하는 스크립트
주요 기능
- PBS 서버 자동 감지 및 연결
- 스토리지 구성 자동화
- 백업 작업 스케줄 설정
- 기존 백업 설정 마이그레이션
🎯 요구사항
필수 요구사항
-
PBS 서버 정보
- PBS 서버 IP/호스트명
- PBS 사용자 인증 정보 (username@realm)
- PBS API 토큰 또는 비밀번호
- Datastore 이름
-
Proxmox VE 요구사항
- Proxmox VE 6.x 이상
- root 권한
- pvesm 명령어 사용 가능
-
네트워크 요구사항
- PBS 서버와 통신 가능 (포트 8007)
- 지문(fingerprint) 자동 획득 가능
🔧 기능 상세
1. PBS 서버 감지 및 검증
# PBS 서버 연결 테스트
# API 접근 가능 여부 확인
# 지문(fingerprint) 자동 획득
2. 스토리지 등록
# PBS 스토리지를 Proxmox VE에 추가
pvesm add pbs <storage-id> \
--server <pbs-server> \
--datastore <datastore-name> \
--username <username@realm> \
--password <password> \
--fingerprint <fingerprint>
3. 백업 작업 구성
- 일일 백업 스케줄 설정
- VM/CT 선택적 백업
- 보존 정책 설정
4. 암호화 설정 (선택사항)
- 백업 암호화 키 생성
- 키 안전한 저장
📝 스크립트 구조
pbs_auto_registration.sh
├── 1. 환경 체크
│ ├── Proxmox 버전 확인
│ ├── 필수 도구 확인
│ └── root 권한 확인
│
├── 2. PBS 정보 수집
│ ├── 대화형 모드
│ ├── 설정 파일 모드
│ └── 환경 변수 모드
│
├── 3. PBS 연결 검증
│ ├── 네트워크 연결 테스트
│ ├── API 인증 테스트
│ └── Datastore 접근 확인
│
├── 4. 스토리지 구성
│ ├── 기존 스토리지 확인
│ ├── 새 스토리지 추가
│ └── 권한 설정
│
├── 5. 백업 작업 설정
│ ├── 백업 대상 선택
│ ├── 스케줄 설정
│ └── 알림 설정
│
└── 6. 검증 및 완료
├── 설정 테스트
├── 첫 백업 실행 (선택)
└── 로그 출력
🔐 보안 고려사항
인증 방식
-
API 토큰 (권장)
- 토큰 ID와 시크릿 사용
- 제한된 권한 부여 가능
-
패스워드 인증
- 임시 사용 후 토큰으로 전환 권장
- 설정 파일에 평문 저장 금지
암호화
- 전송 중 암호화: HTTPS (포트 8007)
- 저장 시 암호화: 선택적 백업 암호화
📦 설정 파일 예시
/etc/pve/pbs_config.conf
# PBS Server Configuration
PBS_SERVER=192.168.1.100
PBS_PORT=8007
PBS_DATASTORE=backup-store
PBS_USERNAME=backup@pbs
# API Token (recommended)
PBS_TOKEN_ID=backup@pbs!automation
PBS_TOKEN_SECRET=xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
# Storage Configuration
STORAGE_ID=pbs-backup
STORAGE_CONTENT=backup
# Backup Schedule
BACKUP_SCHEDULE="0 2 * * *" # 매일 새벽 2시
BACKUP_MODE=snapshot
BACKUP_COMPRESS=zstd
# Retention Policy
KEEP_DAILY=7
KEEP_WEEKLY=4
KEEP_MONTHLY=6
KEEP_YEARLY=1
# Notification
NOTIFY_EMAIL=admin@example.com
NOTIFY_MODE=failure # always|failure
🚀 사용 방법
기본 실행 (대화형)
bash pbs_auto_registration.sh
설정 파일 사용
bash pbs_auto_registration.sh --config /etc/pve/pbs_config.conf
자동 모드 (프롬프트 없음)
bash pbs_auto_registration.sh --auto \
--server 192.168.1.100 \
--datastore backup-store \
--username backup@pbs \
--token-secret "xxxx"
🔄 기존 백업 마이그레이션
로컬 백업에서 PBS로 전환
- 기존 백업 목록 확인
- PBS로 백업 복사 (선택사항)
- 백업 작업 재구성
- 기존 로컬 백업 정리
📊 모니터링 및 검증
백업 상태 확인
# PBS 스토리지 상태
pvesm status
# 백업 작업 목록
pvesh get /cluster/backup
# 최근 백업 로그
cat /var/log/pve/tasks/active
헬스 체크
- PBS 연결 상태
- 스토리지 용량
- 백업 성공률
- 보존 정책 준수
🛠️ 문제 해결
일반적인 문제
-
연결 실패
- 방화벽 규칙 확인
- PBS 서비스 상태 확인
- 인증서/지문 문제
-
권한 오류
- PBS 사용자 권한 확인
- Datastore 접근 권한
- API 토큰 권한
-
백업 실패
- 스토리지 용량 확인
- 네트워크 안정성
- VM/CT 상태 확인
📈 향후 개선 사항
-
다중 PBS 서버 지원
- 복제/미러링 설정
- 로드 밸런싱
-
고급 백업 정책
- VM별 다른 스케줄
- 조건부 백업
- 증분 백업 최적화
-
자동 복구
- 백업 검증 자동화
- 복구 테스트 자동화
- 재해 복구 계획
-
통합 관리
- 웹 UI 대시보드
- 중앙 집중식 관리
- 멀티 클러스터 지원
📚 참고 자료
🔍 테스트 시나리오
단위 테스트
- PBS 서버 연결 테스트
- 인증 테스트
- 스토리지 추가/제거 테스트
통합 테스트
- 전체 설정 프로세스
- 백업 실행 테스트
- 복구 테스트
스트레스 테스트
- 대용량 VM 백업
- 동시 다중 백업
- 네트워크 장애 시나리오
📄 라이선스
MIT License
👥 기여자
- 프로젝트 관리자
- 개발팀
- 테스트팀