feat: auto-detect LXC IP and pass to ssh-deploy

- proxmox-lxc: new section to read LXC IP via API or pct exec
- ssh-deploy: SSH_HOST auto-populated from LXC IP, no manual config needed
- workflow: provision flow explicitly includes IP detection step
- project.env: SSH_HOST marked as optional when using Proxmox LXC

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
Christian Mueller 2026-03-20 22:35:43 +01:00
parent acceefe99b
commit 036e5d63f8
4 changed files with 46 additions and 9 deletions

View File

@ -70,6 +70,38 @@ ssh root@$PVE_HOST << 'EOF'
EOF EOF
``` ```
## LXC-IP ERMITTELN
Nach dem Erstellen und Starten des Containers die IP auslesen. Diese IP wird für alle weiteren Schritte und für `/ssh-deploy` verwendet.
### Via Proxmox API
```bash
LXC_IP=$(curl -sk "https://$PVE_HOST:$PVE_PORT/api2/json/nodes/$PVE_NODE/lxc/$VMID/interfaces" \
-H "Authorization: PVEAPIToken=$PVE_USER!$PVE_TOKEN_ID=$PVE_TOKEN_SECRET" \
| jq -r '.data[] | select(.name=="eth0") | .["inet-address"]')
echo "LXC-IP: $LXC_IP"
```
### Via SSH auf Proxmox-Host
```bash
# Variante 1: lxc-info
LXC_IP=$(ssh root@$PVE_HOST "lxc-info -n $VMID -iH 2>/dev/null || pct exec $VMID -- hostname -I | awk '{print \$1}'")
echo "LXC-IP: $LXC_IP"
# Variante 2: pct exec
LXC_IP=$(ssh root@$PVE_HOST "pct exec $VMID -- ip -4 addr show eth0 | grep -oP '(?<=inet\s)\d+(\.\d+){3}'")
echo "LXC-IP: $LXC_IP"
```
### WICHTIG: Automatische Weitergabe an ssh-deploy
Nach der IP-Ermittlung wird SSH_HOST automatisch gesetzt. Kein manueller Eintrag in `project.env` nötig:
```bash
# SSH-Verbindung zum neuen LXC testen
ssh -i $SSH_KEY_PATH -o StrictHostKeyChecking=accept-new deploy@$LXC_IP "echo 'LXC erreichbar'"
```
Ab hier kann `/ssh-deploy` direkt mit `SSH_HOST=$LXC_IP` arbeiten.
## LXC FÜR WEBPROJEKT EINRICHTEN ## LXC FÜR WEBPROJEKT EINRICHTEN
### Basis-Setup (Node.js + Docker) ### Basis-Setup (Node.js + Docker)

View File

@ -8,13 +8,15 @@ Du bist ein SSH-Deploy-Agent für Remote-Testing und Deployment auf Linux-Server
## KONFIGURATION ## KONFIGURATION
``` ```
SSH_HOST=$SSH_HOST SSH_HOST=$SSH_HOST # IP oder Hostname - wird automatisch von /proxmox-lxc gesetzt wenn LXC erstellt wurde
SSH_PORT=$SSH_PORT (default: 22) SSH_PORT=$SSH_PORT # default: 22
SSH_USER=$SSH_USER SSH_USER=$SSH_USER # default: deploy
SSH_KEY_PATH=$SSH_KEY_PATH (default: ~/.ssh/id_rsa) SSH_KEY_PATH=$SSH_KEY_PATH # default: ~/.ssh/id_rsa
DEPLOY_PATH=$DEPLOY_PATH (default: /var/www/app) DEPLOY_PATH=$DEPLOY_PATH # default: /var/www/app
``` ```
**Hinweis:** Wenn vorher `/proxmox-lxc` ausgeführt wurde, ist `SSH_HOST` bereits mit der LXC-IP belegt. Kein manueller Eintrag in `project.env` nötig.
## DEPLOYMENT-PROZESS ## DEPLOYMENT-PROZESS
1. SSH-Verbindung testen: `ssh -i $SSH_KEY_PATH -p $SSH_PORT $SSH_USER@$SSH_HOST "echo ok"` 1. SSH-Verbindung testen: `ssh -i $SSH_KEY_PATH -p $SSH_PORT $SSH_USER@$SSH_HOST "echo ok"`
2. Backup erstellen: `tar -czf backup_$(date +%Y%m%d_%H%M%S).tar.gz $DEPLOY_PATH` 2. Backup erstellen: `tar -czf backup_$(date +%Y%m%d_%H%M%S).tar.gz $DEPLOY_PATH`

View File

@ -67,10 +67,11 @@ Du bist der Workflow-Orchestrator. Du koordinierst alle verfügbaren Skills für
### Neue Umgebung auf Proxmox (`/workflow provision "Projektname"`) ### Neue Umgebung auf Proxmox (`/workflow provision "Projektname"`)
``` ```
1. [proxmox-lxc] → LXC-Container erstellen 1. [proxmox-lxc] → LXC-Container erstellen
2. [proxmox-lxc] → Basis-Setup (Node.js/Docker, Firewall, Nginx) 2. [proxmox-lxc] → LXC-IP automatisch ermitteln → SSH_HOST setzen
3. [docker-build] → Docker-Compose für die App 3. [proxmox-lxc] → Basis-Setup (Node.js/Docker, Firewall, Nginx)
4. [ssh-deploy] → App in den LXC deployen 4. [docker-build] → Docker-Compose für die App
5. [log-analyzer] → Health-Check & Logs prüfen 5. [ssh-deploy] → App in den LXC deployen (nutzt LXC-IP als SSH_HOST)
6. [log-analyzer] → Health-Check & Logs prüfen
``` ```
## QUALITÄTS-GATES ## QUALITÄTS-GATES

View File

@ -22,6 +22,8 @@ GITEA_TOKEN=
# ------------------------------------------- # -------------------------------------------
# SSH DEPLOYMENT # SSH DEPLOYMENT
# ------------------------------------------- # -------------------------------------------
# SSH_HOST wird automatisch aus LXC-IP gesetzt wenn /proxmox-lxc genutzt wird
# Nur manuell setzen wenn KEIN Proxmox-LXC verwendet wird
SSH_HOST= SSH_HOST=
SSH_PORT=22 SSH_PORT=22
SSH_USER=deploy SSH_USER=deploy