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:
parent
acceefe99b
commit
036e5d63f8
@ -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)
|
||||||
|
|||||||
@ -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`
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
@ -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
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user