Mehrere Docker-Hosts: Matches verteilt auf die Hosts starten
CS2_DOCKER_HOSTS nimmt eine Liste von Docker-Hosts. Jedes Match läuft auf dem Host mit den meisten freien Ports und merkt sich seinen Host, damit Status, Konfiguration und Stopp dort landen. Ohne die Variable bleibt alles beim bisherigen einzelnen Host. deploy/docker-host-einrichten.sh richtet einen Host per SSH ein.
This commit is contained in:
1 parent
1a304cb398
commit
eda15bc585
9 files changed
+297
-5
No files matched your search
@@ -0,0 +1,44 @@
|
||||
#!/usr/bin/env bash
|
||||
# Richtet einen Docker-Host für CS2 Mapveto ein. Läuft vom eigenen Rechner aus per SSH.
|
||||
#
|
||||
# Aufruf: bash deploy/docker-host-einrichten.sh <ssh-ziel> [volume]
|
||||
# Beispiel: bash deploy/docker-host-einrichten.sh cs2@192.168.178.111
|
||||
#
|
||||
# Voraussetzungen: SSH-Schlüssel hinterlegt (ohne Passwortabfrage), Docker auf dem Host installiert.
|
||||
set -euo pipefail
|
||||
|
||||
TARGET="${1:?Aufruf: $0 <ssh-ziel> [volume]}"
|
||||
VOLUME="${2:-cs2-mapveto-gamefiles}"
|
||||
IMAGE="joedwards32/cs2:latest"
|
||||
HOST_PART="${TARGET#*@}"
|
||||
|
||||
echo "→ Verbindung zu $TARGET prüfen"
|
||||
ssh -o BatchMode=yes -o ConnectTimeout=10 "$TARGET" true
|
||||
|
||||
echo "→ Docker prüfen"
|
||||
if ! ssh "$TARGET" "command -v docker >/dev/null 2>&1"; then
|
||||
echo "Docker fehlt auf $HOST_PART. Installation: https://docs.docker.com/engine/install/" >&2
|
||||
exit 1
|
||||
fi
|
||||
ssh "$TARGET" "docker info >/dev/null"
|
||||
|
||||
echo "→ Freier Platz für Docker (CS2 braucht rund 90 GB)"
|
||||
ssh "$TARGET" "df -BG /var/lib/docker 2>/dev/null | tail -1 || df -BG / | tail -1"
|
||||
|
||||
echo "→ Volume $VOLUME anlegen (falls nicht vorhanden)"
|
||||
ssh "$TARGET" "docker volume inspect $VOLUME >/dev/null 2>&1 || docker volume create $VOLUME >/dev/null"
|
||||
|
||||
echo "→ Image $IMAGE laden"
|
||||
ssh "$TARGET" "docker pull $IMAGE"
|
||||
|
||||
cat <<EOF
|
||||
|
||||
Fertig. Diesen Eintrag in CS2_DOCKER_HOSTS (JSON-Liste in der .env) aufnehmen:
|
||||
|
||||
{"name":"$HOST_PART","dockerHost":"ssh://$TARGET","publicHost":"$HOST_PART","portStart":27100,"portEnd":27139}
|
||||
|
||||
Hinweise:
|
||||
- name muss pro Host eindeutig sein.
|
||||
- Ports 27100–27139 dürfen auf dem Host frei sein. Pro Host sind bis zu 20 Matches möglich.
|
||||
- Der erste Server-Start lädt die CS2-Spieldateien (rund 60 bis 90 GB). Das dauert lange.
|
||||
EOF
|
||||
Reference in new issue
Block a user