Benutzername:

Passwort:

Autor Thema: HOWTO: Preset-Management für admins  (Gelesen 7813 mal)

niCe Diesel

  • Platin Member
  • ******
  • Beiträge: 3218
  • Vorstand/ArmA2-BeLtr a.D.
    • Profil anzeigen
HOWTO: Preset-Management für admins
« am: 17. Januar 2017, 09:29:16 »
Anleitung zum Preset-Management auf unseren Gameservern (Stand 2017-01-22). Relative Pfade beziehen sich, wenn nichts weiter angegeben, auf den "niCe-root", z.B. C:\niCe

## Einführung

Addons werden aus
C:\niCe\Repository\ArmA3\Source nach
C:\niCe\Repository\ArmA3\Working synchronisiert, mit keys signiert und gepackt für Auslieferung via JustSync.
C:\niCe\Repository\ArmA3\JustSync beinhaltet dann die Repo-Konfiguration, die auf den Linux-Server übertragen wird sowie über die Unison-Profile über Linux-Server als Zwischenstation zwischen den Gameserver-Hosts für die Nutzung in den Gameservern. Zusätzlich beinhalten die Verzeichnisse der GameServer noch Konfigurationsdateien, welche Mods vom Server geladen werden sollen sowie die server-keys, die für die Signaturprüfung auf dem Server verwendet werden.

## A3-Preset Aktualisierung von vorhandenen Mods aus Steam Workshop

  • Auf GS1 unter \Repository\SteamWorkshop\ArmA3_Preset.cfg die steam workshop ids eintragen für Download/Aktualisierung aus workshop
  • \Repository\SteamWorkshop\update.cmd starten zum Download aus workshop
  • \Repository\A3_MOD_Mods.cfg anpassen für Mods, die nach \Repository\Arma3\Source kopiert werden sollen
  • \Repository\UpdateRepoFromWorkshop.cmd ausführen für Synchronisieren zu Addon-Source Ordner
  • ab hier weiter unter "Allgemeine Vorgehensweise"


## Allgemeine Vorgehensweise
  • Optional: addons manuell in \Repository\ArmA3\Source anpassen
  • Versionsnummern in \Repository\ArmA3\JustSync\niCe_A3_MOB.txt und \Repository\ArmA3\JustSync\niCe_A3_TF.txt aktualisieren, z.B. auf aktuellen Tag setzen.
  • addon-Liste in \Repository\ArmA3\A3-Repo erstellen - erstelle neue Keys.ps1 anpassen
  • Gameserver mit Zugriff auf Repo auf selbem Host stoppen (zum Zeitpunkt 2017-07-10: ArmA3_AusLife aktuell keine)
  • \Repository\ArmA3\a3_repo_erstellen.cmd ausführen
        (oder bei minimalen Korrekturen, z.B. Nachkorrektur während Update noch nicht publiziert wurde. \Repository\ArmA3\A3-Repo erstellen - benutze alte Keys.ps1 bzw. auch A3-Repo erstellen - erstelle neue Keys.ps1 aber Konfiguration im Header der Datei anpassen, z.B. $new_key = $true auf $new_key = $false)
  • C:\niCe\Repository\sync_now.cmd
    ausführen um die Presetaktualisierung von Gameserver auf Linuxserver zu synchronisieren. Damit werden auch die neuen Keys in die Unterordner "keys" der jeweiligen Gameserver kopieren (z.B. TF, MOB).
  • Erstmalige Synchronisierung zu anderen GameServern mit Unison ausführen, Profil "sync_data_<hostname>" auf den Gameservern ausführen, sync_data. Fehler wie "Permission denied" wird erwartet für mods, die aktuell auf dem Server in Verwendung sind, diese werden später synchronisiert, wenn der GameServer gestoppt ist. Der Schritt hier hat zum Ziel schonmal einen Großteil der Daten zu kopieren sowie die Untersuchung auf geänderte Dateien zur späteren, nochmaligen Ausführung zu beschleunigen.
  • Prüfen, dass die Synchronisierung auf Linux erfolgreich war, z.B. mit manuellen Aufrufpfaden im Browser so wie zum Beispiel
    http://repo.nice-team.eu/arma3/addon10/@theseus_services/ und Zugriff auf niCe_A3_MOB.txt. Dateien sollten jeweils sichtbar und lesbar sein.
  • Prüfen dass \Repository\JustSync\Maintenance.txt leer ist. Andernfalls hat das "JustSync Preparation Tool" einen Fehler ausgelöst. Zur Diagnose manuell nochmal ausführen, ggf. Konsolenausführung pausieren und untersuchen
  • GameServer stoppen, z.B. über Taskplanner-Jobs oder admin.nice-team.eu
  • Nochmalige Synchronisierung der Daten über unison
  • Mit lokaler ArmA-Instanz testen
  • Jetzt ist das Preset aktualisiert und kann publiziert werden, z.B. im Forum unter Thread A3 Preset Update. Zur Überprüfung welche addons sich geändert haben kann man das Änderungsdatum in \Repository\ArmA3\Source prüfen.
  • Änderungen unter C:\niCe mit git commiten

## Anpassen der Preset-Konfiguration
Die Preset-Konfiguration selber ist in Textdateien mit der Endung .conf in den jeweiligen Unterordnern der Spiele zu finden, z.B. \Repository\ArmA3\JustSync\niCe_A3.conf. In diesen Dateien müssen auch die Gameserver-Verbindungsdatein eingetragen sein, z.B. wenn ein Gameserver ersetzt wird. Nachdem diese Konfigurationsdateien nur vom JustSync-Client verwendet werden müssen sie nach Änderung nur auf den Linuxserver synchronisiert werden. Die Schritte sind also:
  • *.conf Dateien anpassen
  • C:\niCe\Repository\sync_now.cmd ausführen

## Workshop-Server PubMod
Idee des PubMod-Servers war dass auch nicht-Admins die Konfiguration von Mods, die im Steam Workshop angeboten werden, auf einem Server selber anzupassen. Dieses Projekt wurde 2016 von psYGer initiiert.

Aktuell gibt es dazu folgende Komponenten:
  • \GameServer\ArmA3\PubMod_restart.cmd: Restart-Skript mit vorbereitetem Download von Addons aus Steam-Workshop in Gameserver-Ordner, siehe TODOs in Datei
  • \GameServer\ArmA3\PubMod\MPMissions\_WsMods.cfg: Liste von IDs der Mods aus dem Steam-Workshop, die auf dem Preset geladen werden sollen. Diese Datei liegt im "mpmissions"-Ordner, damit sie von jedem Mitglied mit "FTP-Zugriff" angepasst werden kann.
  • \GameServer\ArmA3\PubMod\MPMissions\_WsMods-ServerOnly.cfg: Wie oben nur Mods, die nur auf dem Server ausgeführt werden sollen.

TODOs
  • Anleitung im Forum
  • Liste mit Mods und deren ID, z.B. im Forum
  • Anleitung als Referenz im FTP-Ordner
  • Update-Skript, welches Mods auf Anforderung runterlädt und im Server-Preset anwendet


## Zeitplanung der Preset-Aktualisierung
Es hat sich bewährt die Preset-Aktualisierung jeweils montags durchzuführen bzw. zu finalisieren. Die Vorbereitung inklusive aller Schritte auf GS1 können auch vorher durchgeführt werden, zum Beispiel am Sonntag. Erst durch die Synchronisierung der des JustSync-Presets auf den Linux-Server und auf GS1 wird das Preset für die Benutzer in der aktualisierten Form sichtbar beziehungsweise hat Auswirkung auf die GameServer.
« Letzte Änderung: 06. Mai 2018, 20:43:23 von niCe Diesel »

niCe Diesel

  • Platin Member
  • ******
  • Beiträge: 3218
  • Vorstand/ArmA2-BeLtr a.D.
    • Profil anzeigen
Re: HOWTO: Preset-Management
« Antwort #1 am: 17. Januar 2017, 09:30:04 »
### Download-Probleme bei addons (z.B. @ares_mod, @theseus_services)

Es gab 2017-01 Probleme mit dem Download von einzelnen Dateien aus Addons wenn man diese nicht schon lokal vorliegen hat. Allerdings scheint es zu funktioneren wenn man das TF-Preset runterlädt und dann nochmal MOB synchronisiert. Grund noch unbekannt. Z.B. http://www.pic-upload.de/view-32490339/2017-01-15_Fehler_addon_synchronisierung_einzelne_Dateien.png.html
http://repo.nice-team.eu/arma3/addon10/@ares_mod/addons/data_f_achilles/Adcanced%20Compositions/Ares_var_advanced_compositions.sqf.j7z
Diese Datei ist auch manuell über den Browser downloadbar.
H1 ACCEPTED: Checksum für MOB (addon10) in MD5.txt stimmt nicht
 -> O1-1: Auf Linux-Server: md5sum addon10/@ares_mod/addons/data_f_achilles/Adcan*/Ares_var_advanced_compositions.sqf.j7z: a563b8c4323ed9a1dd1ba1139f18dc78 , und:

# diff addon10/MD5.txt addon20/MD5.txt  | grep "advanced_compositions.*j7z"
< Ares_var_advanced_compositions.sqf.j7z|74ba8c932ab9b5db55451a3932c95b3c|12930|\@ares_mod\addons\data_f_achilles\Adcanced Compositions|
> Ares_var_advanced_compositions.sqf.j7z|a563b8c4323ed9a1dd1ba1139f18dc78|12930|\@ares_mod\addons\data_f_achilles\Adcanced Compositions|

d.h. md5sum entspricht dem von TF, nicht von MOB. -> H1.1

H1.1 md5sum wird nicht korrekt erstellt weil addon schon vorher im preset drin war und irgendwas nicht richtig gelöscht wird -> E1.1-1: ordner in justsync löschen und justsync preparation tool nochmal ausführen -> FAIL weil ordner bereits bestehen muss damit JSA die hashsums erstellt. Ich müsste das Repo komplett neu erstellen und signieren usw. um das zu reproduzieren. Stattdessen hotpatch auf Linux:

sed -i -e '/@ares_mod/d' addon10/MD5.txt
grep @ares_mod addon20/MD5.txt >> addon10/MD5.txt
sed -i -e '/@theseus_services/d' addon10/MD5.txt
grep @theseus_services addon20/MD5.txt >> addon10/MD5.txt
cd addon10
7z a MD5.7z MD5.txt


Wie sich im Nachhinein herausgestellt hat brach die JustSync-Synchronisierung ab was aber nicht erkannt wurde weil sich das Skriptausführungsfenster von alleine schließt. Im Allgemeinen kann man davon ausgehen wenn die Datei Maintenance.txt mit Inhalt größer 0 Byte im JustSync-Ordner verbleibt, ist ein Fehler aufgetreten.

Möglicher Check:
env filename=cba_common.pbo.niCeMOB.bisign md5sum -c <<<"$(grep $filename arma3/addon10/MD5.txt | cut -d'|' -f 2) *arma3/addon10/@cba_a3/addons/$filename" >/dev/null

Dieser wurde eingebaut in einem cronjob unter dem account "diesel" auf l1.nice-team.eu


### Wenige Dateien werden nicht aktualisiert, haben sich aber im Preset geändert

2017-04 ist das Problem aufgetreten dass nach einem Preset-Update einige Dateien den Spielern beim Aktualisieren über JSA nicht aktualisiert wurden obwohl sich die Dateien im Preset selber geändert haben. In diesem Fall waren das zum Beispiel "ace_flashlights.pbo, ace_hitreactions, ace_fonts". Beim Verbinden auf den Server wurden dann Fehlermeldungen ausgegeben, dass die Dateien nicht aktuell sind und die Verbindung mit "Session lost" unterbrochen wird.
Auf dem Gameserver "GS5" selber konnte man erkennen dass die Hashsumme der entsprechenden Dateien nicht aktualisiert wurde, Ausgabe:

Administrator@GS5 MINGW64 /c/niCe/Repository (master)
$ md5sum ArmA3/Source/@ace3/addons/ace_flashlights.pbo ArmA3/Working/@ace3/addons/ace_flashlights.pbo ArmA3/JustSync/addon10/@ace3/addons/ace_flashlights.pbo; grep "ace_flashlights.pbo|" ArmA3/JustSync/addon10/MD5.txt
a98b3c9994cf5795e3481aaa5ef8b95c *ArmA3/Source/@ace3/addons/ace_flashlights.pbo
a98b3c9994cf5795e3481aaa5ef8b95c *ArmA3/Working/@ace3/addons/ace_flashlights.pbo
a98b3c9994cf5795e3481aaa5ef8b95c *ArmA3/JustSync/addon10/@ace3/addons/ace_flashlights.pbo
ace_flashlights.pbo|bafd8d33cba5be79bb5c26ff46a9dc3c|1079853|\@ace3\addons|
-> md5sum in MD5.txt unterscheidet sich vom Wert der Datei selber. Auch nach Löschen der MD5.txt wurde der selbe, falsche Wert erzeugt. Erst ein Löschen der Cache-Datei aus C:\Users\Administrator\AppData\Roaming\JustSyncArmA Preparation Tool\UpdateCache und Neuerstellung mit "a3-repo_only_jsa_preparation.ps1" konnte das Problem lösen.


### @australia_mod

Gegenüber Original folgende Dateien entfernt damit es auch funktioniert wenn @australia nach cup und/oder nziwasogo geladen wird: buildings, Buildings2 (!), ca_e, data, langauage_e (!), language, langauge_acr, language_baf, language_bmf, misc, misc_e, misc2, Misc3 (!), plants, plants_E, plants_e2, Plants_PMC (!), plants2, rocks, rocks_e, rocks2, signs, Signs2 (!), Structures, Structures_E, structures_pmc

Eventuell gibt es noch weitere, die lösen aber zumindest derzeit keine Fehlermeldungen beim Start aus.
« Letzte Änderung: 01. Juli 2018, 09:15:03 von niCe Diesel »