- Flask 기반 웹 제어 패널 구현
- 토글 스위치로 RDP 자동 로그인 제어
- Tailscale IP 기반 접속 정보 표시
- Python venv 환경 사용
- systemd 서비스로 자동 실행
- PBS 자동 등록 스크립트 기획서 추가
🤖 Generated with Claude Code
Co-Authored-By: Claude <noreply@anthropic.com>
262 lines
5.7 KiB
Markdown
262 lines
5.7 KiB
Markdown
# Proxmox Backup Server (PBS) 자동 등록 스크립트 기획서
|
|
|
|
## 📋 프로젝트 개요
|
|
|
|
### 목적
|
|
Proxmox VE 호스트에 PBS(Proxmox Backup Server)를 자동으로 등록하고 백업 작업을 구성하는 스크립트
|
|
|
|
### 주요 기능
|
|
- PBS 서버 자동 감지 및 연결
|
|
- 스토리지 구성 자동화
|
|
- 백업 작업 스케줄 설정
|
|
- 기존 백업 설정 마이그레이션
|
|
|
|
## 🎯 요구사항
|
|
|
|
### 필수 요구사항
|
|
1. **PBS 서버 정보**
|
|
- PBS 서버 IP/호스트명
|
|
- PBS 사용자 인증 정보 (username@realm)
|
|
- PBS API 토큰 또는 비밀번호
|
|
- Datastore 이름
|
|
|
|
2. **Proxmox VE 요구사항**
|
|
- Proxmox VE 6.x 이상
|
|
- root 권한
|
|
- pvesm 명령어 사용 가능
|
|
|
|
3. **네트워크 요구사항**
|
|
- PBS 서버와 통신 가능 (포트 8007)
|
|
- 지문(fingerprint) 자동 획득 가능
|
|
|
|
## 🔧 기능 상세
|
|
|
|
### 1. PBS 서버 감지 및 검증
|
|
```bash
|
|
# PBS 서버 연결 테스트
|
|
# API 접근 가능 여부 확인
|
|
# 지문(fingerprint) 자동 획득
|
|
```
|
|
|
|
### 2. 스토리지 등록
|
|
```bash
|
|
# 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. 검증 및 완료
|
|
├── 설정 테스트
|
|
├── 첫 백업 실행 (선택)
|
|
└── 로그 출력
|
|
```
|
|
|
|
## 🔐 보안 고려사항
|
|
|
|
### 인증 방식
|
|
1. **API 토큰 (권장)**
|
|
- 토큰 ID와 시크릿 사용
|
|
- 제한된 권한 부여 가능
|
|
|
|
2. **패스워드 인증**
|
|
- 임시 사용 후 토큰으로 전환 권장
|
|
- 설정 파일에 평문 저장 금지
|
|
|
|
### 암호화
|
|
- 전송 중 암호화: HTTPS (포트 8007)
|
|
- 저장 시 암호화: 선택적 백업 암호화
|
|
|
|
## 📦 설정 파일 예시
|
|
|
|
### `/etc/pve/pbs_config.conf`
|
|
```ini
|
|
# 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
|
|
bash pbs_auto_registration.sh
|
|
```
|
|
|
|
### 설정 파일 사용
|
|
```bash
|
|
bash pbs_auto_registration.sh --config /etc/pve/pbs_config.conf
|
|
```
|
|
|
|
### 자동 모드 (프롬프트 없음)
|
|
```bash
|
|
bash pbs_auto_registration.sh --auto \
|
|
--server 192.168.1.100 \
|
|
--datastore backup-store \
|
|
--username backup@pbs \
|
|
--token-secret "xxxx"
|
|
```
|
|
|
|
## 🔄 기존 백업 마이그레이션
|
|
|
|
### 로컬 백업에서 PBS로 전환
|
|
1. 기존 백업 목록 확인
|
|
2. PBS로 백업 복사 (선택사항)
|
|
3. 백업 작업 재구성
|
|
4. 기존 로컬 백업 정리
|
|
|
|
## 📊 모니터링 및 검증
|
|
|
|
### 백업 상태 확인
|
|
```bash
|
|
# PBS 스토리지 상태
|
|
pvesm status
|
|
|
|
# 백업 작업 목록
|
|
pvesh get /cluster/backup
|
|
|
|
# 최근 백업 로그
|
|
cat /var/log/pve/tasks/active
|
|
```
|
|
|
|
### 헬스 체크
|
|
- PBS 연결 상태
|
|
- 스토리지 용량
|
|
- 백업 성공률
|
|
- 보존 정책 준수
|
|
|
|
## 🛠️ 문제 해결
|
|
|
|
### 일반적인 문제
|
|
1. **연결 실패**
|
|
- 방화벽 규칙 확인
|
|
- PBS 서비스 상태 확인
|
|
- 인증서/지문 문제
|
|
|
|
2. **권한 오류**
|
|
- PBS 사용자 권한 확인
|
|
- Datastore 접근 권한
|
|
- API 토큰 권한
|
|
|
|
3. **백업 실패**
|
|
- 스토리지 용량 확인
|
|
- 네트워크 안정성
|
|
- VM/CT 상태 확인
|
|
|
|
## 📈 향후 개선 사항
|
|
|
|
1. **다중 PBS 서버 지원**
|
|
- 복제/미러링 설정
|
|
- 로드 밸런싱
|
|
|
|
2. **고급 백업 정책**
|
|
- VM별 다른 스케줄
|
|
- 조건부 백업
|
|
- 증분 백업 최적화
|
|
|
|
3. **자동 복구**
|
|
- 백업 검증 자동화
|
|
- 복구 테스트 자동화
|
|
- 재해 복구 계획
|
|
|
|
4. **통합 관리**
|
|
- 웹 UI 대시보드
|
|
- 중앙 집중식 관리
|
|
- 멀티 클러스터 지원
|
|
|
|
## 📚 참고 자료
|
|
|
|
- [Proxmox Backup Server Documentation](https://pbs.proxmox.com/docs/)
|
|
- [Proxmox VE Storage Documentation](https://pve.proxmox.com/wiki/Storage)
|
|
- [PBS API Reference](https://pbs.proxmox.com/docs/api-viewer/)
|
|
|
|
## 🔍 테스트 시나리오
|
|
|
|
### 단위 테스트
|
|
1. PBS 서버 연결 테스트
|
|
2. 인증 테스트
|
|
3. 스토리지 추가/제거 테스트
|
|
|
|
### 통합 테스트
|
|
1. 전체 설정 프로세스
|
|
2. 백업 실행 테스트
|
|
3. 복구 테스트
|
|
|
|
### 스트레스 테스트
|
|
1. 대용량 VM 백업
|
|
2. 동시 다중 백업
|
|
3. 네트워크 장애 시나리오
|
|
|
|
## 📄 라이선스
|
|
MIT License
|
|
|
|
## 👥 기여자
|
|
- 프로젝트 관리자
|
|
- 개발팀
|
|
- 테스트팀 |