Unterschiede
Hier werden die Unterschiede zwischen zwei Versionen angezeigt.
| Vorhergehende Überarbeitung | |||
| — | public:sonstiges:unterhaltung:spiele:switche_versenken [2021/10/14 20:34] (aktuell) – netali | ||
|---|---|---|---|
| Zeile 1: | Zeile 1: | ||
| + | ====== Switche versenken ====== | ||
| + | Switche versenken ist eine Variante von Schiffe versenken, bei der zunächst virtuelle Schiffe gesetzt und dann durch Kabelstecken versenkt werden müssen. | ||
| + | |||
| + | <WRAP center round info 60%> | ||
| + | Das hier ist eine **neue** Version des Switche versenken Spieles. Die alte Version befindet sich [[public: | ||
| + | </ | ||
| + | |||
| + | ===== Hardwarevoraussetzungen ===== | ||
| + | * Beliebige HP-Switches (die Software ist getestet mit mehreren 2650er Switchen oder jeweils einem 54er Switch) | ||
| + | * Ein Server zum Hosten des Spiels und zum Abfangen der SNMP-Traps (ein einfacher Raspberry Pi zum Beispiel) | ||
| + | * 2 Laptops für die Spieler | ||
| + | * Einige Patchkabel | ||
| + | * Ein weiterer Switch, um alle Switche und die Laptops und den Server miteinander zu verbinden | ||
| + | |||
| + | ===== Einrichtung der Switche ===== | ||
| + | Allgemein ist es vorgesehen, dass das Spielfeld jedes Spielers aus einer 12x6 Matrix aus Switchports besteht. Bei einem 54er Switch sind das beispielsweise 3 übereinander liegende Module (in diesem Beispiel jeweils immer die Module A, C und E) oder falls keine 54er Switche zur Verfügung stehen, können auch mehrere 1HE-Switche mit mindestens 24 Ports gestacked werden. Für die Einrichtung beider Szenarien folgt nun eine Anleitung: | ||
| + | |||
| + | ==== Mit jeweils 3 1HE Switchen pro Spieler ==== | ||
| + | - Zunächst sollten die Switche alle eine statische IP im Netz des Servers zugeordnet bekommen | ||
| + | * In diesem Beispiel wird nun davon ausgegangen, | ||
| + | * Weiterhin hat in diesem Beispiel der Server die IP '' | ||
| + | - Nun sollte noch die maximale VLAN-Grenze der Switche auf 100 erhöht werden, da jeder Spiele-Port ein eigenes VLAN bekommt, damit es nicht schlimm ist, wenn Loops gesteckt werden | ||
| + | * Dies kann man am einfachsten tun, indem man '' | ||
| + | - Wenn das getan ist, muss der Switch einmal rebooten, um das VLAN-Limit zu erhöhen | ||
| + | - Wenn er wieder an ist, kann die restliche Konfiguration automatisch erledigt werden, da es sonst sehr mühsam ist, an 3*24 Ports ein eigenes VLAN anzulegen | ||
| + | * Dafür gibt es [[https:// | ||
| + | * Zum Benutzen des Scripts muss der ausführende Rechner die Switche erreichen können und die Software '' | ||
| + | * Wenn diese Voraussetzungen erfüllt sind, kann das Script mit '' | ||
| + | * Für einen 2650er 50 Port Switch, bei dem die Ports 1-24 als Spielfeld und 25-48 als Linkerzeuger dienen und 49-50 zum Uplink vorgesehen sind, kann mit oben erwähnten Beispiel-Werten Switch 1 konfiguriert werden: | ||
| + | * '' | ||
| + | |||
| + | ==== Mit jeweils einem 54er Switch pro Spieler ==== | ||
| + | - Als erstes wird hierbei vorausgesetzt, | ||
| + | - Zunächst sollten die Switche alle eine statische IP im Netz des Servers zugeordnet bekommen | ||
| + | * In diesem Beispiel wird nun davon ausgegangen, | ||
| + | * Weiterhin hat in diesem Beispiel der Server die IP '' | ||
| + | - Nun sollte noch die maximale VLAN-Grenze der Switche auf 100 erhöht werden, da jeder Spiele-Port ein eigenes VLAN bekommt, damit es nicht schlimm ist, wenn Loops gesteckt werden | ||
| + | * Dies kann man am einfachsten tun, indem man '' | ||
| + | - Wenn das getan ist, muss der Switch einmal rebooten, um das VLAN-Limit zu erhöhen | ||
| + | - Wenn er wieder an ist, kann die restliche Konfiguration automatisch erledigt werden, da es sonst sehr mühsam ist, an 3*24 Ports ein eigenes VLAN anzulegen | ||
| + | * Dafür gibt es [[https:// | ||
| + | * Zum Benutzen des Scripts muss der ausführende Rechner die Switche erreichen können und die Software '' | ||
| + | * Wenn diese Voraussetzungen erfüllt sind, kann das Script mit '' | ||
| + | * Nun kann mit oben genannten Beispielwerten der erste Switch so konfiguriert werden: | ||
| + | * '' | ||
| + | |||
| + | ===== Einrichtung des Servers ===== | ||
| + | Für die Erklärung wird von folgenden Beispielwerten ausgegangen (Erläuterungen folgen unten): | ||
| + | * Der Server hat die IP '' | ||
| + | * Die SNMP-Community lautet '' | ||
| + | * Der SNMP-Trap-Handler liegt unter ''/ | ||
| + | * Das Frontend wird unter ''/ | ||
| + | * Das Backend wird unter ''/ | ||
| + | * Das venv für das Backend liegt unter ''/ | ||
| + | * Der WSGI-Socket liegt unter ''/ | ||
| + | * Die systemd-Unit für das Backend liegt unter ''/ | ||
| + | |||
| + | Die Einrichtung erfolgt nun so: | ||
| + | - Software installieren: | ||
| + | * '' | ||
| + | - snmptrapd einrichten: | ||
| + | - Das passende Handle-Script aus [[https:// | ||
| + | * Hier liegen aktuell Handle-Scripts für 2650er und 54er Switche vor. Falls andere Switche verwendet werden, kann mithilfe des dev-handle-Scripts nachgeschaut werden, wie die OIDs für das Linkup-Event und die Portnummer heißen und dann kann entsprechend ein Script abgewandelt werden. | ||
| + | - Die snmptrapd.conf unter ''/ | ||
| + | * < | ||
| + | authCommunity log, | ||
| + | traphandle default / | ||
| + | </ | ||
| + | - snmptrapd aktivieren und starten '' | ||
| + | - Installieren und Konfigurieren des Backends | ||
| + | - Das [[https:// | ||
| + | - Eine MySQL-Datenbank anlegen und mit dem Datenbank-Schema aus dem Backend-Repo befüllen und auch gleich einen MySQL-Benutzer mit Zugriff auf diese DB anlegen | ||
| + | - Ein venv für das Backend anlegen | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - '' | ||
| + | - Unter Beispielsweise ''/ | ||
| + | * < | ||
| + | from flaskapp.app import app | ||
| + | |||
| + | if __name__ == " | ||
| + | app.run() | ||
| + | </ | ||
| + | - Unter Beispielsweise ''/ | ||
| + | * < | ||
| + | [uwsgi] | ||
| + | chdir = / | ||
| + | wsgi-file = wsgi.py | ||
| + | callable = app | ||
| + | |||
| + | master = true | ||
| + | processes = 5 | ||
| + | |||
| + | socket = / | ||
| + | chmod-socket = 660 | ||
| + | vacuum = true | ||
| + | |||
| + | die-on-term = true | ||
| + | </ | ||
| + | - Socket-Verzeichnis unter Beispielsweise ''/ | ||
| + | - Backend-Beispielconfig kopieren und anpassen | ||
| + | * Die Config befindet sich in diesem Beispiel unter ''/ | ||
| + | * Am Ende muss dort eine Datei namens '' | ||
| + | * Die '' | ||
| + | - Die systemd-Unit für das Backend anlegen (mit unseren Beispielpfaden): | ||
| + | * < | ||
| + | [Unit] | ||
| + | Description=uWSGI Instanz für swv-backend | ||
| + | After=network.target | ||
| + | |||
| + | [Service] | ||
| + | User=www-data | ||
| + | Group=www-data | ||
| + | WorkingDirectory=/ | ||
| + | Environment=" | ||
| + | ExecStart=/ | ||
| + | |||
| + | [Install] | ||
| + | WantedBy=multi-user.target | ||
| + | </ | ||
| + | - Die systemd-Unit aktivieren und starten: | ||
| + | * '' | ||
| + | - Installieren und Konfigurieren des Frontends | ||
| + | - Das [[https:// | ||
| + | - Im ausgecheckten Repo unter '' | ||
| + | - Frontend bauen: | ||
| + | * '' | ||
| + | * '' | ||
| + | * '' | ||
| + | - Den nginx Konfigurieren: | ||
| + | * Erneut mit unseren Beispielwerten: | ||
| + | * < | ||
| + | server { | ||
| + | listen 80 default_server; | ||
| + | listen [::]:80 default_server; | ||
| + | root / | ||
| + | |||
| + | index index.html index.htm index.nginx-debian.html; | ||
| + | |||
| + | server_name _; | ||
| + | |||
| + | location / { | ||
| + | try_files $uri $uri/ =404; | ||
| + | } | ||
| + | | ||
| + | location /api/ { | ||
| + | uwsgi_pass unix:/// | ||
| + | include uwsgi_params; | ||
| + | } | ||
| + | } | ||
| + | </ | ||
| + | - Den nginx reloaden: | ||
| + | * '' | ||
| + | - Fertig (Wenn alles geklappt hat, dann sollte das Spiel nun von beiden Laptops aus unter '' | ||
| + | - Wenn eine Runde fertig ist, kann das Spiel händisch durch das aufrufen von '' | ||