bplower.factorio
Factorio
Un rol para crear servidores de Factorio https://galaxy.ansible.com/bplower/factorio/
Requisitos
No hay requisitos
Variables del Rol
Las variables se pueden dividir en dos grupos: configuraciones de despliegue y configuraciones de Factorio.
Configuraciones de Despliegue
Las configuraciones de despliegue están relacionadas con la forma en que Ansible instala el servidor de Factorio. Estas deben ser lo suficientemente generales para permitir que se ejecuten múltiples servidores de Factorio simultáneamente.
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 }}"
Más información detallada sobre estas variables es la siguiente:
Variable:
server_sources
Predeterminado:"/opt/games/sources/factorio"
Comentarios:
Dónde almacenar los binarios del servidor descargados desde eldownload_url
.Variable:
server_version
Predeterminado:"0.17.79"
Opciones:- "0.18.26"
- "0.17.79"
- "0.17.74"
- "0.16.51"
- "0.15.40"
- "0.14.23"
- "0.13.20"
- "0.12.35"
Comentarios:
Debes establecer el valordownload_checksum
si configuras esta variable. Este valor se utiliza en eldownload_url
predeterminado.Variable:
download_url
Predeterminado:"https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
Comentarios:
La URL para descargar el binario del servidor. Esto solo se descargará si la ruta"{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
no existe.Variable:
download_checksum
Predeterminado:"sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"
Comentarios:
El checksum que debe coincidir con el binario del servidor descargado. Esto asegura la integridad. Si cambias eldownload_url
oserver_version
, debes adaptar el checksum también. Para obtener el checksum de un binario de servidor, puedes usarcurl --silent --location <download_url> | sha256sum
. Para desactivar la verificación del checksum, simplemente configúralo como una cadena vacía (""
).Variable:
service_name
Predeterminado:"factorio-server"
Comentarios:
El nombre del servicio a crear. Se pueden ejecutar múltiples instancias de servidores de Factorio en un único host proporcionando valores diferentes para esta variable (vea la sección de ejemplos de este documento).Variable:
service_user
Predeterminado:"factorio"
Comentarios:
El usuario con el que debe ejecutarse el servicio.Variable:
service_group
Predeterminado:"factorio"
Comentarios:
El grupo al que debe pertenecer el usuario del servicio.Variable:
service_root
Predeterminado:"/home/{{ service_user }}"
Comentarios:
El directorio en el que se almacenarán los contenidos del archivo zip de Factorio descargado del servidor. Esto resultará en que los recursos de Factorio se almacenen en{{ service_root }}/factorio/
.Variable:
service_port
Predeterminado:34197
Comentarios:
El puerto en el que alojar el servicio. Este valor predeterminado es el valor predeterminado de Factorio.Variable:
service_restart_permitted
Predeterminado:true
Comentarios:
Configurar esto comofalse
evitará que el servicio se reinicie si se aplican cambios. Esto permite aplicar configuraciones en preparación para el próximo reinicio del servicio sin causar interrupciones inmediatas.Variable:
factorio_default_save
Predeterminado:"{{ service_root }}/factorio/saves/default-save.zip"
Comentarios:
El archivo de guardado predeterminado usado por el servidor.Variable:
factorio_target_save
Predeterminado:"{{ factorio_default_save }}"
Comentarios:
El archivo de guardado que ejecutará el servidor. Esta distinción se proporciona para facilitar el cambio entre varios archivos de guardado.
Configuraciones de Factorio
Las configuraciones para varios archivos de configuración se pueden establecer en diccionarios que llevan un nombre relacionado con el archivo. Cada diccionario comienza con factorio_
seguido del nombre del archivo (sin la extensión) donde los guiones (-) son reemplazados por guiones bajos (_). Por ejemplo, el archivo server-settings.json
está asociado con la variable de diccionario factorio_server_settings
.
La carpeta default/
contiene varios archivos que muestran ejemplos de diccionarios que representan los valores proporcionados por diversos archivos JSON de ejemplos de los servidores de Factorio.
A continuación, se presenta una lista de los archivos de configuración que se han implementado:
Nombre de archivo:
server-settings.json
Variable:factorio_server_settings
Ejemplo:factorio_server_settings: name: "Mi servidor público" max_players: 10 game_password: "micontraseña" visibility: public: true lan: true
Nombre de archivo:
server-whitelist.json
Variable:factorio_server_whitelist
Ejemplo:factorio_server_whitelist: - Oxyd
Nombre de archivo:
map-settings.json
Variable:factorio_map_settings
Ejemplo:factorio_map_settings: pollution: enabled: false
Nombre de archivo:
map-gen-settings.json
Variable:factorio_map_gen_settings
Ejemplo:factorio_map_gen_settings: water: "alto" autoplace_controles: coal: size: "muy-bajo"
Ejemplos de Playbooks
Un ejemplo básico podría verse así:
---
- name: Crear un servidor de Factorio por defecto
hosts: localhost
roles:
- role: bplower.factorio
Un ejemplo con un puerto no predeterminado y un nombre personalizado:
---
- name: Mi servidor de Factorio ligeramente modificado
hosts: localhost
roles:
- role: bplower.factorio
service_port: 12345
factorio_server_settings:
name: "Mi servidor de Factorio"
Un ejemplo de múltiples servidores en un único host:
---
- name: Granja de 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 }}
Licencia
GNU GPLv3
Desarrollo y Contribuciones
Ya no uso este proyecto con regularidad, pero trato de mantenerlo actualizado cuando es posible. Si tienes algún problema o pregunta al respecto, te animo a que abras un PR o un problema.
Pruebas
Este rol utiliza yamllint para la validación de YAML y molecule + docker para pruebas.
Ambas herramientas se pueden instalar usando el archivo dev-requirements.txt
. Necesitarás
instalar Docker por separado.
pip install -r dev-requirements.txt`
Agrupar todas las plataformas soportadas causó problemas para CI, por lo que las pruebas se dividen en 3 escenarios basados en las plataformas que se están probando.
El archivo makefile se puede usar para iniciar cada una de las pruebas y tiene un menú de ayuda con descripciones para cada objetivo:
$ make help
Uso:
make
Objetivos:
help Mostrar esta ayuda
lint Lint archivos YAML
test_all Ejecutar todas las pruebas de molecule
test_centos Ejecutar pruebas de molecule en centos
test_debian Ejecutar pruebas de molecule en debian
test_ubuntu Ejecutar pruebas de molecule en ubuntu
ansible-galaxy install bplower.factorio