initial COM2 system snapshot
This commit is contained in:
80
com2_fix_network.sh
Executable file
80
com2_fix_network.sh
Executable file
@@ -0,0 +1,80 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
cd /opt/hx-ki/com2-stack
|
||||
F="docker-compose.yml"
|
||||
NET="hxki-internal"
|
||||
|
||||
[ -f "$F" ] || { echo "FEHLT: $PWD/$F"; exit 1; }
|
||||
|
||||
echo "=== COM2: FIX NETWORK (hxki-internal external) ==="
|
||||
|
||||
# 1) Docker-Netzwerk auf Host sicherstellen
|
||||
if ! docker network ls --format '{{.Name}}' | grep -q "^${NET}$"; then
|
||||
echo "[1] Erzeuge Docker-Netzwerk: ${NET}"
|
||||
docker network create "${NET}" >/dev/null
|
||||
else
|
||||
echo "[1] OK: Docker-Netzwerk existiert: ${NET}"
|
||||
fi
|
||||
|
||||
# 2) Compose patchen: networks: hxki-internal: external: true
|
||||
python3 - <<'PY'
|
||||
from pathlib import Path
|
||||
import re
|
||||
|
||||
p = Path("/opt/hx-ki/com2-stack/docker-compose.yml")
|
||||
s = p.read_text()
|
||||
|
||||
net = "hxki-internal"
|
||||
|
||||
def ensure_network_block(txt: str) -> str:
|
||||
# Wenn schon networks: existiert -> sicherstellen, dass hxki-internal drin ist + external:true
|
||||
if re.search(r'(?m)^\s*networks:\s*$', txt):
|
||||
# hat bereits hxki-internal block?
|
||||
if re.search(r'(?m)^\s{2}' + re.escape(net) + r'\s*:\s*$', txt):
|
||||
# ensure external: true darunter
|
||||
# falls external fehlt, einfügen direkt nach net-block header
|
||||
def repl(m):
|
||||
block = m.group(0)
|
||||
if re.search(r'(?m)^\s{4}external:\s*true\s*$', block):
|
||||
return block
|
||||
# external: true nach header einfügen
|
||||
return block + " external: true\n"
|
||||
txt = re.sub(
|
||||
r'(?ms)^\s{2}' + re.escape(net) + r'\s*:\s*\n(?:^\s{4}.*\n)*',
|
||||
repl,
|
||||
txt
|
||||
)
|
||||
else:
|
||||
# networks existiert, aber hxki-internal fehlt -> am Ende der networks-sektion einfügen
|
||||
# wir hängen es direkt nach "networks:" an, falls keine weiteren networks existieren,
|
||||
# ansonsten ans Ende der networks-liste (deterministisch: nach networks:-Header)
|
||||
txt = re.sub(r'(?m)^(networks:\s*)$',
|
||||
r'\1\n ' + net + ':\n external: true',
|
||||
txt, count=1)
|
||||
return txt
|
||||
|
||||
# Wenn networks fehlt -> ans Ende anhängen
|
||||
return txt.rstrip() + f"\n\nnetworks:\n {net}:\n external: true\n"
|
||||
|
||||
s2 = ensure_network_block(s)
|
||||
|
||||
# Minimaler sanity cleanup: doppelte Leerzeilen nicht eskalieren
|
||||
s2 = re.sub(r'\n{4,}', '\n\n\n', s2)
|
||||
|
||||
p.write_text(s2)
|
||||
print("OK: networks/hxki-internal als external:true gesetzt.")
|
||||
PY
|
||||
|
||||
echo "[3] VALIDATE"
|
||||
docker compose config >/dev/null
|
||||
echo "OK: Compose ist valide."
|
||||
|
||||
echo "[4] UP"
|
||||
docker compose up -d --remove-orphans
|
||||
|
||||
echo "=== STATUS ==="
|
||||
docker ps --format 'NAME={{.Names}} STATUS={{.Status}} PORTS={{.Ports}}'
|
||||
echo "=== HXKI-INTERNAL ==="
|
||||
docker network inspect "${NET}" --format '{{range $id,$c := .Containers}}{{println $c.Name}}{{end}}' | sort
|
||||
echo "=== ENDE ==="
|
||||
Reference in New Issue
Block a user