bplower.factorio

Factorio

Instalar desde Ansible Galaxy Ansible Lint

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 el download_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 valor download_checksum si configuras esta variable. Este valor se utiliza en el download_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 el download_url o server_version, debes adaptar el checksum también. Para obtener el checksum de un binario de servidor, puedes usar curl --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 como false 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
Acerca del proyecto

A role for creating Factorio servers

Instalar
ansible-galaxy install bplower.factorio
Licencia
Unknown
Descargas
310
Propietario