feat(dr): script de deploy pentru scripturile DR + documentare procedura
Pana acum deploy-ul se facea manual (`cp ... /opt/scripts/`), nedocumentat nicaieri - de unde si fisierele weekly-dr-test-proxmox.sh.bak-* ramase pe pveelite. deploy.sh face aceiasi pasi, dar refuza situatiile care au costat deja timp: - suprascrierea unui script AFLAT IN EXECUTIE: bash citeste scriptul incremental de pe disc, iar suprascrierea unui test DR in curs (~18 min) corupe executia; - CRLF: bash pe Linux raspunde "$'\r': command not found"; - transfer trunchiat: bash -n local si inca o data pe nod dupa copiere; - flag-ul vm109-debug.flag lasat in urma dupa deploy pe guest (dezarmeaza permanent watchdog-ul, exact apararea care a prins incidentul 04-20). Distributia pe noduri e asimetrica intentionat si e codificata explicit in script: scripturile cluster-aware (test DR, patch window, watchdog) pe ambele noduri fiindca urmaresc VM 109 dupa failover HA; ZFS/mirror doar pe pveelite unde traieste datasetul; alertele si failover-ul doar pe pvemini, fiindca reactioneaza la caderea pveelite - puse pe pveelite ar fi inutile si ar inlesni exact split-brain-ul pe care incearca sa-l previna. Verificarea "ruleaza acum" foloseste pgrep -f '[/]opt/scripts/x.sh'. Parantezele nu sunt cosmetice: comanda trimisa prin ssh apare ea insasi in lista de procese, deci forma fara paranteze se gaseste pe sine si raporteaza orice script ca fiind in executie (verificat: exit 0 vs exit 1). Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BhQBTegE4PiMPPaapLHjkc
This commit is contained in:
@@ -327,6 +327,51 @@ D:\oracle\scripts\cleanup_database.cmd
|
||||
ssh root@10.0.20.202 "qm stop 109"
|
||||
```
|
||||
|
||||
## 🚀 Deploy
|
||||
|
||||
Repo-ul e sursa; scripturile se copiază pe destinații cu `scripts/deploy.sh`. Până în 2026-08-08 deploy-ul se făcea manual (`cp ... /opt/scripts/`), de unde și fișierele `.bak-*` rămase pe pveelite.
|
||||
|
||||
```bash
|
||||
cd proxmox/vm109-windows-dr/scripts
|
||||
|
||||
./deploy.sh --check # ce diferă, fără să copieze nimic
|
||||
./deploy.sh # doar nodurile Proxmox
|
||||
./deploy.sh --guest # noduri + scripturile PowerShell pe VM 109
|
||||
./deploy.sh --guest-only # doar VM 109
|
||||
```
|
||||
|
||||
### Distribuția pe noduri — asimetrică intenționat
|
||||
|
||||
| Script | pvemini (.201) | pveelite (.202) | De ce |
|
||||
|---|:---:|:---:|---|
|
||||
| `weekly-dr-test-proxmox.sh` | ✅ | ✅ | cluster-aware, urmărește VM 109 după failover HA |
|
||||
| `vm109-patch-window.sh` | ✅ | ✅ | idem |
|
||||
| `vm109-watchdog.sh` | ✅ | ✅ | idem |
|
||||
| `check_servicing.ps1`, `install_updates.ps1` | ✅ | ✅ | sursă pentru deploy-ul către guest |
|
||||
| `oracle-backup-monitor-proxmox.sh` | — | ✅ | acolo e datasetul ZFS `oracle-backups` |
|
||||
| `zfs-replicate-oracle-backups.sh` | — | ✅ | sursa replicării |
|
||||
| `nightly-backup-mirror.sh` | — | ✅ | idem |
|
||||
| `pveelite-down-alert.sh` | ✅ | — | reacționează la **căderea** pveelite |
|
||||
| `failover-dr-to-pvemini.sh` | ✅ | — | rulat de operator **pe pvemini** |
|
||||
| `failback-dr-to-pveelite.sh` | ✅ | — | idem |
|
||||
|
||||
Nu „repara" asimetria: un script de failover prezent pe nodul greșit e exact scenariul de split-brain pe care scripturile încearcă să-l prevină.
|
||||
|
||||
### Ce verifică deploy.sh înainte să copieze
|
||||
|
||||
- **script în execuție** — refuză suprascrierea; bash citește scriptul incremental de pe disc, iar suprascrierea unui test DR în curs (~18 min) corupe execuția;
|
||||
- **CRLF** — `bash` pe Linux răspunde `$'\r': command not found`;
|
||||
- **`bash -n`** local și încă o dată pe nod după copiere (prinde transferurile trunchiate);
|
||||
- **md5** — sare peste fișierele identice, ca output-ul să arate doar ce s-a schimbat.
|
||||
|
||||
Pentru guest: VM 109 e oprit între teste, deci `--guest` îl pornește, setează `vm109-debug.flag` (altfel watchdog-ul îl oprește la 60 min), copiază prin pveelite ca jump host, verifică funcțional `check_servicing.ps1` și oprește VM-ul la loc. Dacă VM 109 rula deja, avertizează și lasă 5s pentru Ctrl-C.
|
||||
|
||||
**Cron-ul nu e atins de deploy.** După adăugarea unui script nou:
|
||||
|
||||
```bash
|
||||
ssh root@10.0.20.202 'crontab -l | grep -E "dr-test|patch-window|watchdog"'
|
||||
```
|
||||
|
||||
## 🐛 Troubleshooting
|
||||
|
||||
### ⚡ Simptome frecvente — unde te uiți întâi
|
||||
|
||||
Reference in New Issue
Block a user