bplower.factorio

Factorio

从 Ansible Galaxy 安装 Ansible Lint

用于创建 Factorio 服务器的角色 https://galaxy.ansible.com/bplower/factorio/

需求

没有需求

角色变量

变量大致可分为两组:部署配置和 Factorio 配置。

部署配置

部署配置都与 ansible 安装 Factorio 服务器的方式有关。这些配置应足够抽象,以允许同时运行多个 Factorio 服务器。

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 }}"

关于这些变量的详细信息如下:

  • 变量: server_sources
    默认: "/opt/games/sources/factorio"
    注释:
    用于缓存从 download_url 下载的服务器二进制文件的位置。

  • 变量: server_version
    默认: "0.17.79"
    选项:

    • "0.18.26"
    • "0.17.79"
    • "0.17.74"
    • "0.16.51"
    • "0.15.40"
    • "0.14.23"
    • "0.13.20"
    • "0.12.35"

    注释:
    如果设置了此变量,必须设置 download_checksum 值。该值用于默认的 download_url

  • 变量: download_url
    默认: "https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
    注释:
    用于下载服务器二进制文件的 URL。仅在路径 "{{ server_sources }}/factorio-{{ server_version }}.tar.gz" 不存在时才会下载。

  • 变量: download_checksum
    默认: "sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df" 注释:
    必须与下载的服务器二进制文件匹配的校验和。这确保了完整性。 如果更改了 download_urlserver_version,还需要调整校验和。要获取服务器二进制文件的校验和,可以使用 curl --silent --location <download_url> | sha256sum。 要禁用校验和验证,只需将其设置为空字符串 ("")。

  • 变量: service_name
    默认: "factorio-server"
    注释:
    创建的服务名称。通过为此变量提供不同的值,可以在单个主机上运行多个实例的 Factorio 服务器(参见本文档的示例部分)。

  • 变量: service_user
    默认: "factorio"
    注释:
    服务应以该用户身份运行。

  • 变量: service_group
    默认: "factorio"
    注释:
    服务用户应属于的组。

  • 变量: service_root
    默认: "/home/{{ service_user }}"
    注释:
    存储从服务器下载的 Factorio 压缩文件内容的目录。这将导致 Factorio 资源存储在 {{ service_root }}/factorio/ 中。

  • 变量: service_port
    默认: 34197
    注释:
    托管服务的端口。此默认值是 Factorio 的默认值。

  • 变量: service_restart_permitted
    默认: true
    注释:
    将此设置为 false 将阻止服务在应用了更改后重新启动。这允许在为下一个服务重启做准备时应用设置,而不立即导致服务中断。

  • 变量: factorio_default_save
    默认: "{{ service_root }}/factorio/saves/default-save.zip"
    注释:
    服务器使用的默认保存文件。

  • 变量: factorio_target_save
    默认: "{{ factorio_default_save }}"
    注释:
    服务器要运行的保存文件。此区分可方便在多个保存文件之间切换。

Factorio 配置

可以在以文件名命名的字典中设置各种配置文件的设置。每个字典以 factorio_ 开头,后面是文件名(不包括文件扩展名),其中连字符(-)被替换为下划线(_)。例如,server-settings.json 文件与字典变量 factorio_server_settings 相关联。

default/ 文件夹包含多个文件,显示代表 Factorio 服务器各种示例 JSON 文件提供的值的示例字典。

以下是已实现的配置文件列表:

  • 文件名: server-settings.json
    变量: factorio_server_settings
    示例:

    factorio_server_settings:
      name: "我的公共服务器"
      max_players: 10
      game_password: "mypassword"
      visibility:
        public: true
        lan: true
    
  • 文件名: server-whitelist.json
    变量: factorio_server_whitelist
    示例:

    factorio_server_whitelist:
    - Oxyd
    
  • 文件名: map-settings.json
    变量: factorio_map_settings
    示例:

    factorio_map_settings:
      pollution:
        enabled: false
    
  • 文件名: map-gen-settings.json
    变量: factorio_map_gen_settings
    示例:

    factorio_map_gen_settings:
      water: "高"
      autoplace_controles:
        coal:
          size: "非常低"
    

示例剧本

开箱即用的示例可能如下所示:

---
- name: 创建一个默认的 Factorio 服务器
  hosts: localhost
  roles:
  - role: bplower.factorio

一个带有非默认端口和自定义名称的示例:

---
- name: 我稍微修改过的 Factorio 服务器
  hosts: localhost
  roles:
  - role: bplower.factorio
    service_port: 12345
    factorio_server_settings:
      name: "我的 Factorio 服务器"

一个在单个主机上运行多个服务器的示例:

---
- name: 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 }}

许可

GNU GPLv3

开发与贡献

我不再定期使用此项目,但我会尽量保持其更新。如果您有任何问题或疑问,欢迎您提交 PR 或问题。

测试

此角色使用 yamllint 进行 YAML 验证,使用 molecule + docker 进行测试。 这两个工具可以通过 dev-requirements.txt 文件安装。您需要单独安装 docker。

pip install -r dev-requirements.txt

将所有支持的平台分组在一起导致 CI 发生问题,因此测试分为 3 个基于平台的场景。

可以使用 makefile 启动每个测试,并支持带有各个目标描述的帮助菜单:

$ make help

用法:
  make
  
目标:
  help        显示帮助信息
  lint        检查 YAML 文件
  test_all    运行所有 molecule 测试
  test_centos 运行 molecule centos 测试
  test_debian 运行 molecule debian 测试
  test_ubuntu 运行 molecule ubuntu 测试
关于项目

A role for creating Factorio servers

安装
ansible-galaxy install bplower.factorio
许可证
Unknown
下载
310
拥有者