bplower.factorio
Factorio
用于创建 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_url
或server_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 测试