모든 파일의 Git 저장소 주소를 변경: - https://github.com/yourusername/cafe24-testserver https://git.siane.kr/firstgarden/cafe24-testserver 변경된 파일: - README.md: 3곳 - proxmox/README.md: 4곳 - proxmox/setup.sh: 3곳 - proxmox/create_vm.sh: 1곳 - proxmox/create_lxc.sh: 2곳 - vm/setup_common.sh: 1곳 - lxc/setup_mariadb.sh: 1곳
317 lines
6.8 KiB
Markdown
317 lines
6.8 KiB
Markdown
# Proxmox VE 자동화 스크립트
|
|
|
|
Proxmox VE 호스트에서 직접 VM과 LXC를 생성하고 자동으로 설정하는 스크립트 모음입니다.
|
|
|
|
## 📋 스크립트 목록
|
|
|
|
### 1. `setup.sh` - 전체 자동화 (권장)
|
|
|
|
Proxmox 호스트에서 VM 2개(PHP 8.2, 8.4)와 LXC(MariaDB)를 한 번에 생성하고 설정합니다.
|
|
|
|
**사전 요구사항:**
|
|
- Proxmox VE 호스트 (root 계정)
|
|
- Rocky Linux 9 ISO 파일
|
|
- Rocky Linux 9 LXC 템플릿
|
|
- Git 설치
|
|
|
|
**사용법:**
|
|
```bash
|
|
cd /root
|
|
git clone https://git.siane.kr/firstgarden/cafe24-testserver.git
|
|
cd cafe24-testserver
|
|
chmod +x proxmox/setup.sh
|
|
./proxmox/setup.sh
|
|
```
|
|
|
|
**주요 기능:**
|
|
- ✓ Git 저장소 클론/업데이트
|
|
- ✓ VM1 (PHP 8.2) 생성
|
|
- ✓ VM2 (PHP 8.4) 생성
|
|
- ✓ LXC (MariaDB) 생성 및 자동 설정
|
|
- ✓ 사용자 입력으로 ID, 리소스 설정 가능
|
|
- ✓ 설정 요약 및 확인 절차 포함
|
|
|
|
**실행 흐름:**
|
|
```
|
|
1. Git 저장소 설정
|
|
2. VM1 설정 입력 (ID, 이름, 메모리 등)
|
|
3. VM2 설정 입력
|
|
4. LXC 설정 입력
|
|
5. 설정 요약 확인
|
|
6. VM1, VM2, LXC 생성
|
|
7. LXC MariaDB 자동 설정
|
|
```
|
|
|
|
---
|
|
|
|
### 2. `create_vm.sh` - 개별 VM 생성
|
|
|
|
단일 VM을 생성합니다. ID는 사용자가 지정 가능합니다.
|
|
|
|
**사용법:**
|
|
```bash
|
|
chmod +x proxmox/create_vm.sh
|
|
./proxmox/create_vm.sh
|
|
```
|
|
|
|
**입력 항목:**
|
|
- VM ID (예: 101, 102, 103...)
|
|
- VM 이름 (예: vm1-php82)
|
|
- 메모리 (MB)
|
|
- CPU 코어
|
|
- 디스크 (GB)
|
|
- ISO 경로
|
|
|
|
**주요 기능:**
|
|
- ✓ 기본값 제공 (메모리 2GB, CPU 2Core, 디스크 30GB)
|
|
- ✓ 기존 ID 중복 확인
|
|
- ✓ 설정 요약 및 확인
|
|
- ✓ Rocky Linux 설치 가이드 제공
|
|
|
|
**실행 예시:**
|
|
```bash
|
|
$ ./proxmox/create_vm.sh
|
|
[INFO] ==========================================
|
|
[INFO] Proxmox VE - VM 생성
|
|
[INFO] ==========================================
|
|
|
|
VM ID (예: 101): 103
|
|
VM 이름 (예: vm1-php82): vm3-php82-test
|
|
메모리 (MB) [기본값: 2048]: 2048
|
|
CPU 코어 [기본값: 2]: 2
|
|
디스크 (GB) [기본값: 30]: 30
|
|
ISO 경로 [기본값: local:iso/Rocky-9.0-latest.iso]:
|
|
|
|
[INFO] ==========================================
|
|
[INFO] 설정 요약
|
|
[INFO] ==========================================
|
|
|
|
ID: 103
|
|
이름: vm3-php82-test
|
|
...
|
|
```
|
|
|
|
---
|
|
|
|
### 3. `create_lxc.sh` - 개별 LXC 생성 및 MariaDB 설정
|
|
|
|
단일 LXC를 생성하고 MariaDB를 자동 설정합니다. ID는 사용자가 지정 가능합니다.
|
|
|
|
**사용법:**
|
|
```bash
|
|
chmod +x proxmox/create_lxc.sh
|
|
./proxmox/create_lxc.sh
|
|
```
|
|
|
|
**입력 항목:**
|
|
- LXC ID (예: 201, 202, 203...)
|
|
- 호스트명 (예: lxc-db)
|
|
- 메모리 (MB)
|
|
- CPU 코어
|
|
- 디스크 (GB)
|
|
- LXC 템플릿 경로
|
|
- Git 저장소 URL
|
|
|
|
**주요 기능:**
|
|
- ✓ 기본값 제공 (메모리 2GB, CPU 2Core, 디스크 20GB)
|
|
- ✓ 기존 ID 중복 확인
|
|
- ✓ 자동 IP 확인
|
|
- ✓ MariaDB 설정 스크립트 자동 실행
|
|
- ✓ LXC IP 주소 표시
|
|
|
|
**실행 예시:**
|
|
```bash
|
|
$ ./proxmox/create_lxc.sh
|
|
[INFO] ==========================================
|
|
[INFO] Proxmox VE - LXC 생성 및 MariaDB 설정
|
|
[INFO] ==========================================
|
|
|
|
LXC ID (예: 201): 202
|
|
호스트명 (예: lxc-db): lxc-db-backup
|
|
메모리 (MB) [기본값: 2048]: 2048
|
|
...
|
|
|
|
[✓] LXC 생성 완료
|
|
[✓] LXC IP: 192.168.1.100
|
|
[INFO] MariaDB 설정 스크립트 실행 중...
|
|
```
|
|
|
|
---
|
|
|
|
## 🔧 사용 예시
|
|
|
|
### 예시 1: 전체 자동화 (권장)
|
|
|
|
```bash
|
|
# Proxmox 호스트에서 root로 실행
|
|
cd /root
|
|
git clone https://git.siane.kr/firstgarden/cafe24-testserver.git
|
|
cd cafe24-testserver
|
|
chmod +x proxmox/setup.sh
|
|
./proxmox/setup.sh
|
|
|
|
# 대화형 입력 시작
|
|
# 기본값 입력하려면 Enter 키 누르기
|
|
# 전부 입력 후 확인 (y/n)
|
|
```
|
|
|
|
### 예시 2: 개별 VM 생성
|
|
|
|
```bash
|
|
# VM1 (PHP 8.2)
|
|
./proxmox/create_vm.sh
|
|
# ID 입력: 101
|
|
# 이름 입력: vm1-php82
|
|
# 나머지 기본값 입력
|
|
|
|
# VM2 (PHP 8.4)
|
|
./proxmox/create_vm.sh
|
|
# ID 입력: 102
|
|
# 이름 입력: vm2-php84
|
|
```
|
|
|
|
### 예시 3: 개별 LXC 생성
|
|
|
|
```bash
|
|
./proxmox/create_lxc.sh
|
|
# ID 입력: 201
|
|
# 호스트명 입력: lxc-db
|
|
# 나머지 설정 입력
|
|
# MariaDB 설정이 자동으로 진행됨
|
|
```
|
|
|
|
---
|
|
|
|
## ⚙️ 고급 옵션
|
|
|
|
### VM 생성 후 수동 설정
|
|
|
|
VM을 생성한 후 Proxmox 웹 UI 콘솔에서 Rocky Linux를 설치한 후:
|
|
|
|
```bash
|
|
# VM에 SSH로 접속
|
|
ssh firstgarden@<VM_IP>
|
|
|
|
# 스크립트 다운로드 및 실행
|
|
curl -fsSL https://git.siane.kr/firstgarden/cafe24-testserver/archive/main.tar.gz | tar xz
|
|
cd cafe24-testserver-main
|
|
|
|
# 공통 설정 실행
|
|
chmod +x vm/setup_common.sh
|
|
./vm/setup_common.sh
|
|
|
|
# PHP 설치
|
|
chmod +x vm/install_php.sh
|
|
./vm/install_php.sh 8.2 # 또는 8.4
|
|
```
|
|
|
|
### LXC 수동 설정
|
|
|
|
LXC가 생성되었지만 MariaDB 설정을 다시 실행하려면:
|
|
|
|
```bash
|
|
# Proxmox 호스트에서 실행
|
|
pct exec 201 -- bash
|
|
|
|
# LXC 내부에서
|
|
cd /root/cafe24-testserver-main
|
|
chmod +x lxc/setup_mariadb.sh
|
|
./lxc/setup_mariadb.sh
|
|
```
|
|
|
|
---
|
|
|
|
## 🐛 문제 해결
|
|
|
|
### 문제: "Proxmox VE가 설치되어 있지 않습니다."
|
|
|
|
**원인:** Proxmox 호스트가 아닌 다른 시스템에서 실행 중
|
|
|
|
**해결:** Proxmox VE 호스트의 root 계정에서만 실행
|
|
|
|
```bash
|
|
ssh root@proxmox-host
|
|
cd /root/cafe24-testserver
|
|
./proxmox/setup.sh
|
|
```
|
|
|
|
### 문제: "VM ID 101이 이미 존재합니다."
|
|
|
|
**해결:** 다른 ID 사용 또는 기존 VM 삭제
|
|
|
|
```bash
|
|
# 기존 VM 확인
|
|
qm list
|
|
|
|
# 기존 VM 삭제 (주의!)
|
|
qm destroy 101 --force
|
|
```
|
|
|
|
### 문제: LXC 생성 후 IP가 자동 할당되지 않음
|
|
|
|
**해결:** DHCP 설정 확인
|
|
|
|
```bash
|
|
# LXC 네트워크 재시작
|
|
pct exec 201 -- systemctl restart networking
|
|
|
|
# IP 확인
|
|
pct exec 201 -- ip addr show eth0
|
|
```
|
|
|
|
### 문제: MariaDB 스크립트가 실행되지 않음
|
|
|
|
**원인:** 저장소 다운로드 실패
|
|
|
|
**해결:** 수동으로 실행
|
|
|
|
```bash
|
|
pct exec 201 -- bash -c "
|
|
cd /root
|
|
curl -fsSL 'https://git.siane.kr/firstgarden/cafe24-testserver/archive/main.tar.gz' | tar xz
|
|
cd cafe24-testserver-main
|
|
chmod +x lxc/setup_mariadb.sh
|
|
./lxc/setup_mariadb.sh
|
|
"
|
|
```
|
|
|
|
---
|
|
|
|
## 📊 기본 설정값
|
|
|
|
| 항목 | VM | LXC |
|
|
|------|----|----|
|
|
| 메모리 | 2048 MB | 2048 MB |
|
|
| CPU | 2 Core | 2 Core |
|
|
| 디스크 | 30 GB | 20 GB |
|
|
| 네트워크 | vmbr0 (DHCP) | vmbr0 (DHCP) |
|
|
| 저장소 | local-lvm | local-lvm |
|
|
|
|
---
|
|
|
|
## 🔐 보안 주의사항
|
|
|
|
1. **Git 저장소 URL 변경**
|
|
- 모든 스크립트의 `yourusername` 부분을 실제 GitHub 계정으로 변경
|
|
- 개인 저장소인 경우 SSH 키 설정 필요
|
|
|
|
2. **Root 계정 사용**
|
|
- 스크립트는 root 권한이 필요
|
|
- Proxmox 호스트에서만 실행
|
|
|
|
3. **비밀번호 안전성**
|
|
- MariaDB 설정 중 강력한 비밀번호 사용
|
|
|
|
---
|
|
|
|
## 📝 참고사항
|
|
|
|
- 모든 스크립트는 **Rocky Linux 9** 기준으로 작성됨
|
|
- **색상 표시**는 Linux/Unix 환경에서만 작동 (Windows PowerShell 미지원)
|
|
- 각 스크립트는 독립적으로 실행 가능하며 서로 영향을 주지 않음
|
|
|
|
---
|
|
|
|
**최종 수정:** 2024년 12월 23일
|
|
**버전:** 1.0.0
|