Was macht resilient-server-ops?
Protokoll für schwache Verbindungen — Unterbrechungssichere Claude Code Agent-Fähigkeit für SSH, Deployments und Remote-Arbeit über instabile Netzwerke (Mobilfunk, Zug, wackliges WLAN). Atomare Schreibvorgänge + nohup + Idempotenz + Wiederherstellungs-Krümel.
Motivation
Standard-SSH-Sitzungen reißen ab. Halb geschriebene Konfigurationen beschädigen Server. Deployment-Läufe bleiben im Nichts hängen, wenn eine WLAN-Verbindung abreißt. Der Agent muss nicht von vorne beginnen, sondern kann Aufgaben unterbrechungssicher fortsetzen.
Kerntechniken
- Atomare Datei schreiben:
cp /tmp/foo /etc/bar.tmp && mv /etc/bar.tmp /etc/bar— verhindert halb geschriebene Konfigurationen. - Nohup & Disown: Führe Skripte mit
nohupaus und verwendedisown, damit sie nach einem Agent-Neustart weiterlaufen. - Idempotenz-Prüfung: Prüfe immer den aktuellen Zustand, bevor du eine Aktion ausführst (
if grep -q ...). - Wiederherstellungs-Krümel: Schreibe nach jedem Schritt einen Datei-Marker (z. B.
/tmp/deploy-step-2-done), damit der Agent nach einer erneuten Verbindung weiß, wo er aufgehört hat.
Nutzungsmuster
1. SSH-Befehl mit Wiederherstellung
# Statt:
ssh user@host 'systemctl restart nginx'
# Verwende:
ssh user@host '
touch /tmp/_step_start_restart &&
systemctl restart nginx &&
touch /tmp/_step_end_restart
'
2. Deployment mit nohup
nohup ssh user@host 'bash -s' < ./deploy.sh &
disown
3. Idempotente Datei-Konfiguration
ssh user@host <<'EOF'
if [ ! -f /etc/nginx/sites-available/my-site.conf ]; then
cat > /tmp/my-site.conf.tmp <<'CONF'
server {
listen 80;
...
}
CONF
mv /tmp/my-site.conf.tmp /etc/nginx/sites-available/my-site.conf
ln -sf /etc/nginx/sites-available/my-site.conf /etc/nginx/sites-enabled/
systemctl reload nginx
fi
EOF
Protokoll für schwache Verbindungen
- Vorbereitung: Lokales State-Verzeichnis anlegen (
~/.resilient-ops-state/). - Prüfen: Existiert ein Wiederherstellungs-Krümel? Falls ja, Schritt 1–5 überspringen.
- Verbinden: SSH mit
ServerAliveInterval=5undServerAliveCountMax=3. - Ausführen: Jeder Schritt erzeugt nach erfolgreicher Ausführung einen Krümel.
- Wiederherstellung: Bei erneuter Verbindung: Wiederherstellungs-Krümel lesen und letzte nicht abgeschlossene Aufgabe fortsetzen.
- Abschluss: Nach erfolgreichem Ende alle Krümel löschen.
Kompatibilität
- Claude Code Agent: Voll unterstützt (die Fähigkeit sendet wiederherstellbare Befehle).
- Jeder SSH-Host: Keine spezielle Software auf dem Ziel erforderlich.
- Nicht anbietergebunden: Funktioniert mit jedem VPS, Bare-Metal-Server oder Cloud-Instanz.
Einschränkungen
- Der Agent muss über eine lokale Datei (State) den Wiederherstellungs-Krümel lesen können.
- Enge Zusammenarbeit zwischen Agent und Ziel-Shell-Skripten erforderlich.
- Kein automatisches Timeout-Handling für hängende Netzlaufwerke.
Verwandte Fähigkeiten
- mirosing/atomical-rollback — Rollback-Handling für den Fall eines fehlgeschlagenen atomaren Schreibvorgangs.
- mirosing/ssh-keepalive — Erweitertes Keepalive mit automatischer Wiederverbindung.
Lizenz
MIT