Reorganize proxmox documentation into subdirectories per LXC/VM

- Create cluster/ for Proxmox cluster infrastructure (SSH guide, HA monitor, UPS)
- Create lxc108-oracle/ for Oracle Database documentation and scripts
- Create vm201-windows/ for Windows 11 VM docs and SSL certificate scripts
- Add SSL certificate monitoring scripts (check-ssl-certificates.ps1, monitor-ssl-certificates.sh)
- Remove archived VM107 references (decommissioned)
- Update all cross-references between files
- Update main README.md with new structure and navigation

Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
Marius
2026-01-27 17:02:49 +02:00
parent 1da4c2347c
commit 4d51d5b2d2
33 changed files with 954 additions and 593 deletions

View File

@@ -0,0 +1,156 @@
#!/bin/bash
#
# Script de shutdown orchestrat pentru mentenanță UPS
# Folosit când trebuie să oprești complet clusterul pentru înlocuire baterie
#
# Autor: Claude Code
# Data: 2025-10-06
LOGFILE="/var/log/ups-maintenance.log"
NODES=("10.0.20.200" "10.0.20.202") # pve1, pveelite (adaptează dacă IP-urile sunt altele)
# Culori pentru output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" | tee -a $LOGFILE
}
echo -e "${BLUE}========================================${NC}"
echo -e "${BLUE}UPS MAINTENANCE - CLUSTER SHUTDOWN${NC}"
echo -e "${BLUE}========================================${NC}"
echo ""
echo -e "${YELLOW}⚠️ ATENȚIE: Acest script va opri TOATE nodurile cluster!${NC}"
echo -e "${YELLOW}⚠️ Folosit pentru mentenanță UPS (înlocuire baterie)${NC}"
echo ""
echo -e "${RED}Cluster nodes care vor fi oprite:${NC}"
echo " - pve1 (10.0.20.200)"
echo " - pveelite (10.0.20.202)"
echo " - pvemini (10.0.20.201) - ULTIMUL"
echo ""
read -p "Continui cu shutdown? (scrie 'DA' pentru confirmare): " confirm
if [ "$confirm" != "DA" ]; then
echo -e "${RED}Anulat de utilizator.${NC}"
exit 0
fi
log "========================================"
log "MAINTENANCE SHUTDOWN - START"
log "Initiated by: $(whoami)"
log "========================================"
# 1. Verificare status cluster înainte
log "Step 1: Verificare status cluster..."
pvecm status | tee -a $LOGFILE
echo ""
# 2. Oprire VM-uri pe toate nodurile
log "Step 2: Oprire VM-uri pe TOATE nodurile..."
echo -e "${BLUE}Oprire VM-uri pe pvemini (local)...${NC}"
for vmid in $(qm list | awk 'NR>1 {print $1}'); do
vm_name=$(qm config $vmid | grep '^name:' | cut -d' ' -f2 || echo "VM-$vmid")
vm_status=$(qm status $vmid | awk '{print $2}')
if [ "$vm_status" == "running" ]; then
log " Oprire VM $vmid ($vm_name) pe pvemini..."
qm shutdown $vmid --timeout 180 &
else
log " VM $vmid ($vm_name) deja oprit"
fi
done
# Oprire VM-uri pe nodurile secundare
for node_ip in ${NODES[@]}; do
echo -e "${BLUE}Oprire VM-uri pe nod $node_ip...${NC}"
ssh -o ConnectTimeout=5 root@$node_ip "
for vmid in \$(qm list | awk 'NR>1 {print \$1}'); do
vm_name=\$(qm config \$vmid | grep '^name:' | cut -d' ' -f2 || echo 'VM-'\$vmid)
vm_status=\$(qm status \$vmid | awk '{print \$2}')
if [ \"\$vm_status\" == \"running\" ]; then
echo ' Oprire VM '\$vmid' ('\$vm_name') pe $node_ip...'
qm shutdown \$vmid --timeout 180 &
fi
done
" 2>&1 | tee -a $LOGFILE
done
log "Așteptare 3 minute pentru shutdown VM-uri..."
echo -e "${YELLOW}Aștept 180 secunde pentru oprirea graceful a VM-urilor...${NC}"
for i in {180..1}; do
echo -ne "\r${YELLOW}Rămas: $i secunde...${NC} "
sleep 1
done
echo ""
# 3. Verificare VM-uri oprite
log "Step 3: Verificare VM-uri oprite..."
running_vms=$(qm list | awk 'NR>1 && $3=="running" {print $1}')
if [ ! -z "$running_vms" ]; then
log "WARNING: VM-uri încă pornite pe pvemini: $running_vms"
echo -e "${YELLOW}WARNING: Unele VM-uri încă rulează. Oprire forțată în 30 secunde...${NC}"
sleep 30
for vmid in $running_vms; do
log " Force stop VM $vmid"
qm stop $vmid
done
fi
# 4. Oprire containere (dacă există)
log "Step 4: Oprire containere LXC (dacă există)..."
pct list 2>/dev/null | awk 'NR>1 && $2=="running" {print $1}' | while read ctid; do
log " Oprire container $ctid"
pct shutdown $ctid --timeout 60 &
done
sleep 70
# 5. Oprire noduri secundare
log "Step 5: Oprire noduri secundare (pve1, pveelite)..."
for node_ip in ${NODES[@]}; do
log " Shutdown nod $node_ip în 2 minute..."
echo -e "${RED}Shutdown nod $node_ip...${NC}"
ssh -o ConnectTimeout=5 root@$node_ip "shutdown -h +2 'UPS Maintenance - Battery Replacement'" 2>&1 | tee -a $LOGFILE &
done
log "Așteptare 150 secunde pentru shutdown noduri secundare..."
echo -e "${YELLOW}Aștept 150 secunde pentru oprirea nodurilor secundare...${NC}"
for i in {150..1}; do
echo -ne "\r${YELLOW}Rămas: $i secunde până la shutdown pvemini...${NC} "
sleep 1
done
echo ""
# 6. Oprire nod local (pvemini) - ULTIMUL
log "Step 6: Oprire pvemini (nod PRIMARY - ULTIMUL)..."
log "========================================"
log "MAINTENANCE SHUTDOWN - COMPLETE"
log "Nodurile secundare ar trebui să fie oprite."
log "pvemini se va opri în 2 minute."
log "========================================"
echo ""
echo -e "${GREEN}========================================${NC}"
echo -e "${GREEN}SHUTDOWN ORCHESTRAT FINALIZAT${NC}"
echo -e "${GREEN}========================================${NC}"
echo ""
echo -e "${YELLOW}URMĂTORII PAȘI:${NC}"
echo "1. Așteaptă 2 minute pentru oprirea completă a pvemini"
echo "2. Verifică că toate LED-urile nodurilor sunt stinse"
echo "3. Deconectează UPS de la priză"
echo "4. Înlocuiește bateria UPS"
echo "5. Reconectează UPS la priză"
echo "6. Pornește nodurile (apasă buton power sau WOL)"
echo "7. Verifică cluster cu: pvecm status"
echo ""
echo -e "${RED}pvemini se va opri în 2 minute!${NC}"
echo ""
shutdown -h +2 "UPS Maintenance - Battery Replacement - Primary Node"
exit 0