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:
156
proxmox/cluster/ups/scripts/ups-maintenance-shutdown.sh
Normal file
156
proxmox/cluster/ups/scripts/ups-maintenance-shutdown.sh
Normal 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
|
||||
Reference in New Issue
Block a user