bplower.factorio
Factorio
Eine Rolle zur Erstellung von Factorio-Servern https://galaxy.ansible.com/bplower/factorio/
Voraussetzungen
Keine Voraussetzungen
Rollenvariablen
Variablen können grob in zwei Gruppen unterteilt werden: Bereitstellungskonfigurationen und Factorio-Konfigurationen.
Bereitstellungskonfigurationen
Die Bereitstellungskonfigurationen beziehen sich auf die Art und Weise, wie Ansible den Factorio-Server installiert. Diese sollten so abstrahiert sein, dass mehrere Factorio-Server gleichzeitig ausgeführt werden können.
server_sources: "/opt/games/sources/factorio"
server_version: "0.17.79"
download_url: "https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
service_name: "factorio-server"
service_user: "factorio"
service_group: "factorio"
service_root: "/home/{{ service_user }}"
service_port: 34197
service_restart_permitted: true
factorio_default_save: "{{ service_root }}/factorio/saves/default-save.zip"
factorio_target_save: "{{ factorio_default_save }}"
Detaillierte Informationen zu diesen Variablen sind wie folgt:
Variable:
server_sources
Standard:"/opt/games/sources/factorio"
Kommentare:
Wo die Server-Binärdateien, die von der download_url heruntergeladen wurden, zwischengespeichert werden.Variable:
server_version
Standard:"0.17.79"
Auswahlmöglichkeiten:- "0.18.26"
- "0.17.79"
- "0.17.74"
- "0.16.51"
- "0.15.40"
- "0.14.23"
- "0.13.20"
- "0.12.35"
Kommentare:
Wenn Sie diese Variable festlegen, müssen Sie auch den Wert vondownload_checksum
festlegen. Dieser Wert wird in der Standard-download_url
verwendet.Variable:
download_url
Standard:"https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
Kommentare:
Die URL, um die Server-Binärdatei herunterzuladen. Diese wird nur heruntergeladen, wenn der Pfad"{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
nicht vorhanden ist.Variable:
download_checksum
Standard:"sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"
Kommentare:
Die Prüfziffer, die mit der heruntergeladenen Server-Binärdatei übereinstimmen muss. Dies gewährleistet die Integrität. Wenn Sie diedownload_url
oderserver_version
ändern, müssen Sie auch die Prüfziffer anpassen. Um die Prüfziffer einer Server-Binärdatei zu erhalten, können Siecurl --silent --location <download_url> | sha256sum
verwenden. Um die Prüfzifferüberprüfung zu deaktivieren, setzen Sie sie einfach auf einen leeren String (""
).Variable:
service_name
Standard:"factorio-server"
Kommentare:
Der Name des zu erstellenden Dienstes. Mehrere Instanzen von Factorio-Servern können auf einem einzigen Host ausgeführt werden, indem unterschiedliche Werte für diese Variable angegeben werden (siehe den Abschnitt Beispiele in diesem Dokument).Variable:
service_user
Standard:"factorio"
Kommentare:
Der Benutzer, unter dem der Dienst ausgeführt werden soll.Variable:
service_group
Standard:"factorio"
Kommentare:
Die Gruppe, der der Dienstbenutzer angehören soll.Variable:
service_root
Standard:"/home/{{ service_user }}"
Kommentare:
Das Verzeichnis, in dem die Inhalte der von dem Server heruntergeladenen Factorio-Zip-Datei gespeichert werden. Dadurch werden die Factorio-Ressourcen unter{{ service_root }}/factorio/
gespeichert.Variable:
service_port
Standard:34197
Kommentare:
Der Port, auf dem der Dienst betrieben werden soll. Dieser Standardwert ist der Standardwert von Factorio.Variable:
service_restart_permitted
Standard:true
Kommentare:
Wenn Sie dies auffalse
setzen, wird verhindert, dass der Dienst neu gestartet wird, wenn Änderungen angewendet wurden. Dies ermöglicht es, Einstellungen anzuwenden, um sich auf den nächsten Dienstneustart vorzubereiten, ohne sofort einen Dienstunterbrechung zu verursachen.Variable:
factorio_default_save
Standard:"{{ service_root }}/factorio/saves/default-save.zip"
Kommentare:
Die standardmäßige Speicherdatei, die vom Server verwendet wird.Variable:
factorio_target_save
Standard:"{{ factorio_default_save }}"
Kommentare:
Die Speicherdatei, die vom Server ausgeführt werden soll. Diese Unterscheidung dient dazu, zwischen mehreren Speicherdateien zu wechseln.
Factorio-Konfigurationen
Einstellungen für verschiedene Konfigurationsdateien können in Wörterbüchern gesetzt werden, die grob nach der Datei benannt sind. Jeder Wörterbuch beginnt mit factorio_
, gefolgt vom Dateinamen (ohne die Dateiendung), wobei Bindestriche ( - ) durch Unterstriche ( _ ) ersetzt werden. Zum Beispiel wird die Datei server-settings.json
mit der Wörterbuchvariable factorio_server_settings
verknüpft.
Der Ordner default/
enthält mehrere Dateien, die Beispielwörterbücher darstellen, die die Werte darstellen, die von den verschiedenen Beispiel-JSON-Dateien der Factorio-Server bereitgestellt werden.
Hier ist eine Liste von Konfigurationsdateien, die implementiert wurden:
Dateiname:
server-settings.json
Variable:factorio_server_settings
Beispiel:factorio_server_settings: name: "Mein öffentlicher Server" max_players: 10 game_password: "meinpasswort" visibility: public: true lan: true
Dateiname:
server-whitelist.json
Variable:factorio_server_whitelist
Beispiel:factorio_server_whitelist: - Oxyd
Dateiname:
map-settings.json
Variable:factorio_map_settings
Beispiel:factorio_map_settings: pollution: enabled: false
Dateiname:
map-gen-settings.json
Variable:factorio_map_gen_settings
Beispiel:factorio_map_gen_settings: water: "hoch" autoplace_controles: coal: size: "sehr-niedrig"
Beispiel-Playbooks
Ein einfaches Beispiel könnte wie folgt aussehen:
---
- name: Erstelle einen Standard-Factorio-Server
hosts: localhost
roles:
- role: bplower.factorio
Ein Beispiel mit einem anderen Port und angepasstem Namen:
---
- name: Mein leicht veränderter Factorio-Server
hosts: localhost
roles:
- role: bplower.factorio
service_port: 12345
factorio_server_settings:
name: "Mein Factorio-Server"
Ein Beispiel für mehrere Server auf einem einzelnen Host:
---
- name: Factorio-Farm
hosts: localhost
roles:
- role: bplower.factorio
service_port: 50001
service_name: factorio_1
service_root: /home/{{ service_user }}/{{ service_name }}
- role: bplower.factorio
service_port: 50002
service_name: factorio_2
service_root: /home/{{ service_user }}/{{ service_name }}
Lizenz
GNU GPLv3
Entwicklung & Beiträge
Ich nutze dieses Projekt nicht mehr regelmäßig, versuche aber, es bei Bedarf aktuell zu halten. Wenn Sie Probleme oder Fragen dazu haben, ermutige ich Sie, einen PR oder eine Anfrage zu öffnen.
Testen
Diese Rolle verwendet yamllint zur Überprüfung von YAML und Molecule + Docker zum Testen. Beide Tools können mit der Datei dev-requirements.txt
installiert werden. Docker muss separat installiert werden.
pip install -r dev-requirements.txt`
Die Zusammenfassung aller unterstützten Plattformen hat Probleme für CI verursacht, also wurden die Tests in 3 Szenarien basierend auf den getesteten Plattformen aufgeteilt.
Die Makefile kann verwendet werden, um jeden Test zu starten und unterstützt ein Hilfe-Menü mit Beschreibungen für jedes Ziel:
$ make help
Verwendung:
make
Ziele:
help Diese Hilfe anzeigen
lint YAML-Dateien prüfen
test_all Alle Molecule-Tests ausführen
test_centos Molecule-Centos-Tests ausführen
test_debian Molecule-Debian-Tests ausführen
test_ubuntu Molecule-Ubuntu-Tests ausführen