bplower.factorio
Factorio
Un rôle pour créer des serveurs Factorio https://galaxy.ansible.com/bplower/factorio/
Exigences
Aucune exigence
Variables du Rôle
Les variables peuvent être réparties en deux groupes : configurations de déploiement et configurations Factorio.
Configurations de Déploiement
Les configurations de déploiement concernent la manière dont Ansible installe le serveur Factorio. Elles doivent être suffisamment abstraites pour permettre de faire fonctionner plusieurs serveurs Factorio en même temps.
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 }}"
Voici des informations détaillées concernant ces variables :
Variable :
server_sources
Par défaut :"/opt/games/sources/factorio"
Commentaires :
Lieu où mettre en cache les binaires du serveur téléchargés à partir dedownload_url
.Variable :
server_version
Par défaut :"0.17.79"
Choix :- "0.18.26"
- "0.17.79"
- "0.17.74"
- "0.16.51"
- "0.15.40"
- "0.14.23"
- "0.13.20"
- "0.12.35"
Commentaires:
Vous devez définir la valeur dedownload_checksum
si vous définissez cette variable. Cette valeur est utilisée dans l'URL de téléchargement par défaut.Variable :
download_url
Par défaut :"https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
Commentaires:
L'URL pour télécharger le binaire du serveur. Ce fichier sera téléchargé uniquement si le chemin"{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
n'existe pas.Variable :
download_checksum
Par défaut :"sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"
Commentaires:
Le checksum qui doit correspondre au binaire du serveur téléchargé. Cela garantit l'intégrité. Si vous changezdownload_url
ouserver_version
, vous devez également adapter le checksum. Pour obtenir le checksum d'un binaire de serveur, vous pouvez utilisercurl --silent --location <download_url> | sha256sum
. Pour désactiver la vérification du checksum, il suffit de le définir sur une chaîne vide (""
).Variable :
service_name
Par défaut :"factorio-server"
Commentaires:
Le nom du service à créer. Plusieurs instances de serveurs Factorio peuvent fonctionner sur un même hôte en fournissant des valeurs différentes pour cette variable (voir la section des exemples de ce document).Variable :
service_user
Par défaut :"factorio"
Commentaires:
L'utilisateur sous lequel le service doit s'exécuter.Variable :
service_group
Par défaut :"factorio"
Commentaires:
Le groupe dont fait partie l'utilisateur du service.Variable :
service_root
Par défaut :"/home/{{ service_user }}"
Commentaires:
Le répertoire où stocker le contenu du fichier zip de Factorio téléchargé depuis le serveur. Cela signifie que les ressources de Factorio seront stockées à{{ service_root }}/factorio/
.Variable :
service_port
Par défaut :34197
Commentaires:
Le port sur lequel héberger le service. Cette valeur par défaut est la valeur par défaut de Factorio.Variable :
service_restart_permitted
Par défaut :true
Commentaires:
Si vous définissez cela surfalse
, cela empêchera le service d'être redémarré si des modifications ont été appliquées. Cela permet d'appliquer des réglages en préparation du prochain redémarrage du service sans interrompre immédiatement le service.Variable :
factorio_default_save
Par défaut :"{{ service_root }}/factorio/saves/default-save.zip"
Commentaires:
Le fichier de sauvegarde par défaut utilisé par le serveur.Variable :
factorio_target_save
Par défaut :"{{ factorio_default_save }}"
Commentaires:
Le fichier de sauvegarde à utiliser par le serveur. Cette distinction est fournie pour faciliter le changement entre plusieurs fichiers de sauvegarde.
Configurations Factorio
Les réglages pour divers fichiers de configuration peuvent être définis dans des dictionnaires nommés en fonction
du fichier. Chaque dictionnaire commence par factorio_
suivi du nom du fichier
(sans l'extension), où les tirets ( - ) sont remplacés par des soulignements ( _ ). Par exemple, le fichier
server-settings.json
est associé à la variable dictionnaire factorio_server_settings
.
Le dossier default/
contient plusieurs fichiers montrant des exemples de dictionnaires
représentant les valeurs fournies par les différents fichiers JSON d'exemple des serveurs Factorio.
Voici une liste des fichiers de configuration qui ont été implémentés :
Nom du fichier :
server-settings.json
Variable :factorio_server_settings
Exemple :factorio_server_settings: name: "Mon Serveur Public" max_players: 10 game_password: "monmotdepasse" visibility: public: true lan: true
Nom du fichier :
server-whitelist.json
Variable :factorio_server_whitelist
Exemple :factorio_server_whitelist: - Oxyd
Nom du fichier :
map-settings.json
Variable :factorio_map_settings
Exemple :factorio_map_settings: pollution: enabled: false
Nom du fichier :
map-gen-settings.json
Variable :factorio_map_gen_settings
Exemple :factorio_map_gen_settings: water: "high" autoplace_controles: coal: size: "very-low"
Exemples de Playbooks
Un exemple prêt à l'emploi pourrait ressembler à ceci :
---
- name: Créer un serveur Factorio par défaut
hosts: localhost
roles:
- role: bplower.factorio
Un exemple avec un port non par défaut et un nom personnalisé :
---
- name: Mon serveur Factorio légèrement modifié
hosts: localhost
roles:
- role: bplower.factorio
service_port: 12345
factorio_server_settings:
name: "Mon serveur Factorio"
Un exemple de plusieurs serveurs sur un seul hôte :
---
- name: Ferme Factorio
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 }}
Licence
GNU GPLv3
Développement & Contributions
Je n'utilise plus ce projet régulièrement, mais j'essaie de le maintenir à jour lorsque c'est possible. Si vous avez des problèmes ou des questions, je vous encourage à ouvrir un PR ou un problème.
Tests
Ce rôle utilise yamllint pour la validation yaml, et molecule + docker pour les tests.
Les deux outils peuvent être installés à l'aide du fichier dev-requirements.txt
. Vous devrez
installer Docker séparément.
pip install -r dev-requirements.txt
Le regroupement de toutes les plateformes supportées a causé des problèmes pour l'intégration continue, donc les tests sont répartis en 3 scénarios basés sur les plateformes testées.
Le Makefile peut être utilisé pour démarrer chacun des tests et prend en charge un menu d'aide avec des descriptions pour chaque cible :
$ make help
Utilisation :
make
Cibles :
help Afficher cette aide
lint Linter les fichiers yaml
test_all Exécuter tous les tests molecule
test_centos Exécuter les tests molecule centos
test_debian Exécuter les tests molecule debian
test_ubuntu Exécuter les tests molecule ubuntu