Add Factorio serber
This commit is contained in:
parent
b93f95ba99
commit
4cbc53a687
@ -29,3 +29,19 @@
|
|||||||
- industrial-foregoing-1.16.3-3.1.1-a834e76.jar
|
- industrial-foregoing-1.16.3-3.1.1-a834e76.jar
|
||||||
become: yes
|
become: yes
|
||||||
tags: [ game, minecraft, forge, valhelsia ]
|
tags: [ game, minecraft, forge, valhelsia ]
|
||||||
|
- role: factorio
|
||||||
|
vars:
|
||||||
|
server_version: 1.0.0
|
||||||
|
download_checksum: sha256:81d9e1aa94435aeec4131c8869fa6e9331726bea1ea31db750b65ba42dbd1464
|
||||||
|
service_name: factorio-main
|
||||||
|
service_root: /opt/factorio/main
|
||||||
|
factorio_server_settings:
|
||||||
|
name: "Krabby Land"
|
||||||
|
description: "Where a kid can have fun"
|
||||||
|
max_players: 8
|
||||||
|
visibility:
|
||||||
|
public: false
|
||||||
|
lan: false
|
||||||
|
admins: [ "rehashed_salt" ]
|
||||||
|
become: yes
|
||||||
|
tags: [ game, factorio ]
|
||||||
|
65
roles/factorio/.github/workflows/ansible-tests.yml
vendored
Normal file
65
roles/factorio/.github/workflows/ansible-tests.yml
vendored
Normal file
@ -0,0 +1,65 @@
|
|||||||
|
---
|
||||||
|
# Got this action from: https://github.com/colin-mccarthy/ansible_lint_demo
|
||||||
|
|
||||||
|
name: Ansible Tests
|
||||||
|
on: pull_request
|
||||||
|
jobs:
|
||||||
|
yamllint:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up Python 3.7
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r dev-requirements.txt
|
||||||
|
- name: Test with molecule
|
||||||
|
run: make lint
|
||||||
|
molecule_centos:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up Python 3.7
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt install docker
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r dev-requirements.txt
|
||||||
|
- name: Test with molecule
|
||||||
|
run: make test_centos
|
||||||
|
molecule_debian:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up Python 3.7
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt install docker
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r dev-requirements.txt
|
||||||
|
- name: Test with molecule
|
||||||
|
run: make test_debian
|
||||||
|
molecule_ubuntu:
|
||||||
|
runs-on: ubuntu-latest
|
||||||
|
steps:
|
||||||
|
- uses: actions/checkout@v1
|
||||||
|
- name: Set up Python 3.7
|
||||||
|
uses: actions/setup-python@v1
|
||||||
|
with:
|
||||||
|
python-version: 3.7
|
||||||
|
- name: Install dependencies
|
||||||
|
run: |
|
||||||
|
sudo apt install docker
|
||||||
|
python -m pip install --upgrade pip
|
||||||
|
pip install -r dev-requirements.txt
|
||||||
|
- name: Test with molecule
|
||||||
|
run: make test_ubuntu
|
1
roles/factorio/.gitignore
vendored
Normal file
1
roles/factorio/.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
vendor
|
13
roles/factorio/.yamllint
Normal file
13
roles/factorio/.yamllint
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
extends: default
|
||||||
|
|
||||||
|
rules:
|
||||||
|
empty-lines: disable
|
||||||
|
braces:
|
||||||
|
max-spaces-inside: 1
|
||||||
|
level: error
|
||||||
|
brackets:
|
||||||
|
max-spaces-inside: 1
|
||||||
|
level: error
|
||||||
|
line-length: disable
|
||||||
|
truthy: disable
|
257
roles/factorio/README.md
Normal file
257
roles/factorio/README.md
Normal file
@ -0,0 +1,257 @@
|
|||||||
|
# Factorio
|
||||||
|
|
||||||
|
[![Install from Ansible Galaxy](https://img.shields.io/badge/role-bplower.factorio-blue.svg)](https://galaxy.ansible.com/bplower/factorio/)
|
||||||
|
![Ansible Lint](https://github.com/bplower/ansible-factorio/workflows/Ansible%20Tests/badge.svg)
|
||||||
|
|
||||||
|
A role for creating Factorio servers
|
||||||
|
https://galaxy.ansible.com/bplower/factorio/
|
||||||
|
|
||||||
|
## Requirements
|
||||||
|
|
||||||
|
No requirements
|
||||||
|
|
||||||
|
## Role Variables
|
||||||
|
|
||||||
|
Variables can be roughly divided into two groups: deployment configurations and
|
||||||
|
Factorio configurations.
|
||||||
|
|
||||||
|
### Deployment Configurations
|
||||||
|
|
||||||
|
The deployment configurations are all related to the way in which ansible
|
||||||
|
installs the factorio server. These should be abstracted enough to allow
|
||||||
|
multiple factorio servers to be run simultaneously.
|
||||||
|
|
||||||
|
```
|
||||||
|
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 }}"
|
||||||
|
```
|
||||||
|
|
||||||
|
More detailed information about these variables is as follows:
|
||||||
|
|
||||||
|
- Variable: `server_sources`<br>
|
||||||
|
Default: `"/opt/games/sources/factorio"`<br>
|
||||||
|
Comments: <br>
|
||||||
|
Where to cache server binaries downloaded from the download_url
|
||||||
|
|
||||||
|
- Variable: `server_version`<br>
|
||||||
|
Default: `"0.17.79"`<br>
|
||||||
|
Choices:
|
||||||
|
- "0.18.26"
|
||||||
|
- "0.17.79"
|
||||||
|
- "0.17.74"
|
||||||
|
- "0.16.51"
|
||||||
|
- "0.15.40"
|
||||||
|
- "0.14.23"
|
||||||
|
- "0.13.20"
|
||||||
|
- "0.12.35"
|
||||||
|
|
||||||
|
Comments:<br>
|
||||||
|
You must set the `download_checksum` value if you set this variable. This
|
||||||
|
value is used in the default `download_url`.
|
||||||
|
|
||||||
|
- Variable: `download_url`<br>
|
||||||
|
Default: `"https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The URL to download the server binary from. This will only be downloaded if
|
||||||
|
the path `"{{ server_sources }}/factorio-{{ server_version }}.tar.gz"` does
|
||||||
|
not exist.
|
||||||
|
|
||||||
|
- Variable: `download_checksum`<br>
|
||||||
|
Default: `"sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"`
|
||||||
|
Comments:<br>
|
||||||
|
The checksum that must match the downloaded server binary. This ensures the integrity.
|
||||||
|
If you change the `download_url` or `server_version`, you need to adapt the checksum as well. To get the
|
||||||
|
checksum of a server binary, you can use `curl --silent --location <download_url> | sha256sum`.
|
||||||
|
To disable the checksum verification, just set it to an empty string (`""`).
|
||||||
|
|
||||||
|
- Variable: `service_name`<br>
|
||||||
|
Default: `"factorio-server"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The name of the service to create. Multiple instances of factorio servers can
|
||||||
|
be run on a single host by providing different values for this variable (See
|
||||||
|
the examples section of this document).
|
||||||
|
|
||||||
|
- Variable: `service_user`<br>
|
||||||
|
Default: `"factorio"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The user the service should be run as.
|
||||||
|
|
||||||
|
- Variable: `service_group`<br>
|
||||||
|
Default: `"factorio"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The group the service user should be a member of.
|
||||||
|
|
||||||
|
- Variable: `service_root`<br>
|
||||||
|
Default: `"/home/{{ service_user }}"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The directory in which to store the contents of the factorio zip file
|
||||||
|
downloaded from the server. This will result in the factorio resources being
|
||||||
|
stored at `{{ service_root }}/factorio/`.
|
||||||
|
|
||||||
|
- Variab: `service_port`<br>
|
||||||
|
Default: `34197`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The port to host the service on. This default is the factorio default value.
|
||||||
|
|
||||||
|
- Variable: `service_restart_permitted`<br>
|
||||||
|
Default: `true`<br>
|
||||||
|
Comments:<br>
|
||||||
|
Setting this to `false` will prevent the service from being restarted if
|
||||||
|
changes were applied. This allows settings to be applied in preparation for
|
||||||
|
the next service restart without immediately causing service interruption.
|
||||||
|
|
||||||
|
- Variable: `factorio_default_save`<br>
|
||||||
|
Default: `"{{ service_root }}/factorio/saves/default-save.zip"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The default save file used by the server.
|
||||||
|
|
||||||
|
- Variable: `factorio_target_save`<br>
|
||||||
|
Default: `"{{ factorio_default_save }}"`<br>
|
||||||
|
Comments:<br>
|
||||||
|
The save file to be run by the server. This distinction is provided to
|
||||||
|
facilitate switching between multiple save files.
|
||||||
|
|
||||||
|
### Factorio Configurations
|
||||||
|
|
||||||
|
Settings for various config files can be set in dictionaries loosely named after
|
||||||
|
the file. Each dictionary starts with `factorio_` followed by the filename
|
||||||
|
(excluding the filetype extension) where hyphens ( - ) are replaced by
|
||||||
|
underscores ( _ ). For example, the `server-settings.json` file is associated
|
||||||
|
with the dictionary variable `factorio_server_settings`.
|
||||||
|
|
||||||
|
The `default/` folder contains serveral files showing example dictionaries
|
||||||
|
representing the values provided by the Factorio servers various examples JSON
|
||||||
|
files.
|
||||||
|
|
||||||
|
The following is a list of config files that have been implemented:
|
||||||
|
|
||||||
|
- Filename: `server-settings.json`<br>
|
||||||
|
Variable: `factorio_server_settings`<br>
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
factorio_server_settings:
|
||||||
|
name: "My Public Server"
|
||||||
|
max_players: 10
|
||||||
|
game_password: "mypassword"
|
||||||
|
visibility:
|
||||||
|
public: true
|
||||||
|
lan: true
|
||||||
|
```
|
||||||
|
|
||||||
|
- Filename: `server-whitelist.json`<br>
|
||||||
|
Variable: `factorio_server_whitelist`<br>
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
factorio_server_whitelist:
|
||||||
|
- Oxyd
|
||||||
|
```
|
||||||
|
|
||||||
|
- Filename: `map-settings.json`<br>
|
||||||
|
Variable: `factorio_map_settings`<br>
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
factorio_map_settings:
|
||||||
|
pollution:
|
||||||
|
enabled: false
|
||||||
|
```
|
||||||
|
|
||||||
|
- Filename: `map-gen-settings.json`<br>
|
||||||
|
Variable: `factorio_map_gen_settings`<br>
|
||||||
|
Example:
|
||||||
|
```
|
||||||
|
factorio_map_gen_settings:
|
||||||
|
water: "high"
|
||||||
|
autoplace_controles:
|
||||||
|
coal:
|
||||||
|
size: "very-low"
|
||||||
|
```
|
||||||
|
|
||||||
|
## Example Playbooks
|
||||||
|
|
||||||
|
An out of the box example might look as follows:
|
||||||
|
|
||||||
|
```
|
||||||
|
---
|
||||||
|
- name: Create a default factorio server
|
||||||
|
hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: bplower.factorio
|
||||||
|
```
|
||||||
|
|
||||||
|
An example with a non-default port, and customized name:
|
||||||
|
```
|
||||||
|
---
|
||||||
|
- name: My slightly changed factorio server
|
||||||
|
hosts: localhost
|
||||||
|
roles:
|
||||||
|
- role: bplower.factorio
|
||||||
|
service_port: 12345
|
||||||
|
factorio_server_settings:
|
||||||
|
name: "My factorio server"
|
||||||
|
```
|
||||||
|
|
||||||
|
An example of multiple servers on a single host:
|
||||||
|
```
|
||||||
|
---
|
||||||
|
- name: Factorio farm
|
||||||
|
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 }}
|
||||||
|
```
|
||||||
|
|
||||||
|
## License
|
||||||
|
|
||||||
|
GNU GPLv3
|
||||||
|
|
||||||
|
# Development & Contributions
|
||||||
|
|
||||||
|
I don't use this project regularly anymore, but I try to keep it up to date when
|
||||||
|
possible. If you have any issues or questions about it, I encourage you to open
|
||||||
|
a PR or issue.
|
||||||
|
|
||||||
|
## Testing
|
||||||
|
|
||||||
|
This role uses yamllint for yaml validation, and molecule + docker for testing.
|
||||||
|
Both tools can be installed using the `dev-requirements.txt` file. You will need
|
||||||
|
to install docker separately.
|
||||||
|
|
||||||
|
```
|
||||||
|
pip install -r dev-requirements.txt`
|
||||||
|
```
|
||||||
|
|
||||||
|
Grouping all supported platforms together caused issues for CI, so the test are
|
||||||
|
split into 3 scenarios based on the platforms being tested.
|
||||||
|
|
||||||
|
The makefile can be used to start each of the tests, and supports a helpmenu with
|
||||||
|
descriptions for each target:
|
||||||
|
|
||||||
|
```
|
||||||
|
$ make help
|
||||||
|
|
||||||
|
Usage:
|
||||||
|
make
|
||||||
|
|
||||||
|
Targets:
|
||||||
|
help Display this help
|
||||||
|
lint Lint yaml files
|
||||||
|
test_all Run all molecule tests
|
||||||
|
test_centos Run molecule centos tests
|
||||||
|
test_debian Run molecule debian tests
|
||||||
|
test_ubuntu Run molecule ubuntu tests
|
||||||
|
```
|
44
roles/factorio/defaults/main.yml
Normal file
44
roles/factorio/defaults/main.yml
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
---
|
||||||
|
# defaults file for factorio
|
||||||
|
server_version: "0.17.79"
|
||||||
|
server_sources: "/opt/games/sources/factorio"
|
||||||
|
download_url: "https://www.factorio.com/get-download/{{ server_version }}/headless/linux64"
|
||||||
|
download_checksum: "sha256:9ace12fa986df028dc1851bf4de2cb038044d743e98823bc1c48ba21aa4d23df"
|
||||||
|
|
||||||
|
# Configs for the service running the server
|
||||||
|
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 }}"
|
||||||
|
|
||||||
|
# Configs for the factorio server. These examples were copied from
|
||||||
|
# server-settings.example.json and are saved in server-settings.json
|
||||||
|
factorio_server_settings: {}
|
||||||
|
|
||||||
|
# Do not define server settings in this dictionary. This dictionary allows you
|
||||||
|
# to overwrite a single setting without requiring you to provide other defaults.
|
||||||
|
# See the documentation for more information.
|
||||||
|
default_factorio_server_settings:
|
||||||
|
name: "Name of the game as it will appear in the game listing"
|
||||||
|
description: "Description of the game that will appear in the listing"
|
||||||
|
visibility:
|
||||||
|
public: false
|
||||||
|
lan: true
|
||||||
|
|
||||||
|
# server-whitelist.json settings
|
||||||
|
factorio_server_whitelist_enabled: false
|
||||||
|
# factorio_server_whitelist: []
|
||||||
|
|
||||||
|
# map-gen-settings.json settings
|
||||||
|
factorio_map_gen_settings_enabled: false
|
||||||
|
# factorio_map_gen_settings: {}
|
||||||
|
|
||||||
|
# map-settings.json settings
|
||||||
|
factorio_map_settings_enabled: false
|
||||||
|
# factorio_map_settings: {}
|
||||||
|
|
||||||
|
ansible_name_prefix: "({{ service_name }})"
|
40
roles/factorio/defaults/map-gen-settings.yml
Normal file
40
roles/factorio/defaults/map-gen-settings.yml
Normal file
@ -0,0 +1,40 @@
|
|||||||
|
---
|
||||||
|
# Settings for the map-gen-settings.json file
|
||||||
|
# Right now this is just an example of the default values as shown in the
|
||||||
|
# map-gen-settings.example.json file that's provided with the factorio server
|
||||||
|
|
||||||
|
factorio_map_gen_settings:
|
||||||
|
# Sizes can be specified as none, very-low, low, normal, high, very-high
|
||||||
|
terrain_segmentation: "normal"
|
||||||
|
water: "normal"
|
||||||
|
width: 0
|
||||||
|
height: 0
|
||||||
|
starting_area: "normal"
|
||||||
|
peaceful_mode: false
|
||||||
|
autoplace_controls:
|
||||||
|
coal:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
copper-ore:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
crude-oil:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
enemy-base:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
iron-ore:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
stone:
|
||||||
|
frequency: "normal"
|
||||||
|
size: "normal"
|
||||||
|
richness: "normal"
|
||||||
|
# Use null for a random seed, number for a specific seed.
|
||||||
|
seed: null
|
99
roles/factorio/defaults/map-settings.yml
Normal file
99
roles/factorio/defaults/map-settings.yml
Normal file
@ -0,0 +1,99 @@
|
|||||||
|
---
|
||||||
|
# Settings for the map-settings.json file
|
||||||
|
# Right now this is just an example of the default values as shown in the
|
||||||
|
# map-settings.example.json file that's provided with the factorio server
|
||||||
|
|
||||||
|
factorio_map_settings:
|
||||||
|
difficulty_settings:
|
||||||
|
recipe_difficulty: 1
|
||||||
|
technology_difficulty: 1
|
||||||
|
technology_price_multiplier: 1
|
||||||
|
pollution:
|
||||||
|
enabled: true
|
||||||
|
# these are values for 60 ticks (1 simulated second) amount that is
|
||||||
|
# diffused to neighboring chunk
|
||||||
|
diffusion_ratio: 0.02
|
||||||
|
min_to_diffuse: 15
|
||||||
|
ageing: 1
|
||||||
|
expected_max_per_chunk: 7000
|
||||||
|
min_to_show_per_chunk: 700
|
||||||
|
min_pollution_to_damage_trees: 3500
|
||||||
|
pollution_with_max_forest_damage: 10000
|
||||||
|
pollution_per_tree_damage: 2000
|
||||||
|
pollution_restored_per_tree_damage: 500
|
||||||
|
max_pollution_to_restore_trees: 1000
|
||||||
|
enemy_evolution:
|
||||||
|
enabled: true
|
||||||
|
time_factor: 0.000004
|
||||||
|
destroy_factor: 0.002
|
||||||
|
pollution_factor: 0.000015
|
||||||
|
enemy_expansion:
|
||||||
|
enabled: true
|
||||||
|
min_base_spacing: 3
|
||||||
|
max_expansion_distance: 7
|
||||||
|
friendly_base_influence_radius: 2
|
||||||
|
enemy_building_influence_radius: 2
|
||||||
|
building_coefficient: 0.1
|
||||||
|
other_base_coefficient: 2.0
|
||||||
|
neighbouring_chunk_coefficient: 0.5
|
||||||
|
neighbouring_base_chunk_coefficient: 0.4
|
||||||
|
max_colliding_tiles_coefficient: 0.9
|
||||||
|
settler_group_min_size: 5
|
||||||
|
settler_group_max_size: 20
|
||||||
|
min_expansion_cooldown: 14400
|
||||||
|
max_expansion_cooldown: 216000
|
||||||
|
unit_group:
|
||||||
|
min_group_gathering_time: 3600
|
||||||
|
max_group_gathering_time: 36000
|
||||||
|
max_wait_time_for_late_members: 7200
|
||||||
|
max_group_radius: 30.0
|
||||||
|
min_group_radius: 5.0
|
||||||
|
max_member_speedup_when_behind: 1.4
|
||||||
|
max_member_slowdown_when_ahead: 0.6
|
||||||
|
max_group_slowdown_factor: 0.3
|
||||||
|
max_group_member_fallback_factor: 3
|
||||||
|
member_disown_distance: 10
|
||||||
|
tick_tolerance_when_member_arrives: 60
|
||||||
|
max_gathering_unit_groups: 30
|
||||||
|
max_unit_group_size: 200
|
||||||
|
steering:
|
||||||
|
default:
|
||||||
|
radius: 1.2
|
||||||
|
separation_force: 0.005
|
||||||
|
separation_factor: 1.2
|
||||||
|
force_unit_fuzzy_goto_behavior: false
|
||||||
|
moving:
|
||||||
|
radius: 3
|
||||||
|
separation_force: 0.01
|
||||||
|
separation_factor: 3
|
||||||
|
force_unit_fuzzy_goto_behavior: false
|
||||||
|
path_finder:
|
||||||
|
fwd2bwd_ratio: 5
|
||||||
|
goal_pressure_ratio: 2
|
||||||
|
max_steps_worked_per_tick: 100
|
||||||
|
use_path_cache: true
|
||||||
|
short_cache_size: 5
|
||||||
|
long_cache_size: 25
|
||||||
|
short_cache_min_cacheable_distance: 10
|
||||||
|
short_cache_min_algo_steps_to_cache: 50
|
||||||
|
long_cache_min_cacheable_distance: 30
|
||||||
|
cache_max_connect_to_cache_steps_multiplier: 100
|
||||||
|
cache_accept_path_start_distance_ratio: 0.2
|
||||||
|
cache_accept_path_end_distance_ratio: 0.15
|
||||||
|
negative_cache_accept_path_start_distance_ratio: 0.3
|
||||||
|
negative_cache_accept_path_end_distance_ratio: 0.3
|
||||||
|
cache_path_start_distance_rating_multiplier: 10
|
||||||
|
cache_path_end_distance_rating_multiplier: 20
|
||||||
|
stale_enemy_with_same_destination_collision_penalty: 30
|
||||||
|
ignore_moving_enemy_collision_distance: 5
|
||||||
|
enemy_with_different_destination_collision_penalty: 30
|
||||||
|
general_entity_collision_penalty: 10
|
||||||
|
general_entity_subsequent_collision_penalty: 3
|
||||||
|
max_clients_to_accept_any_new_request: 10
|
||||||
|
max_clients_to_accept_short_new_request: 100
|
||||||
|
direct_distance_to_consider_short_request: 100
|
||||||
|
short_request_max_steps: 1000
|
||||||
|
short_request_ratio: 0.5
|
||||||
|
min_steps_to_check_path_find_termination: 2000
|
||||||
|
start_to_goal_cost_multiplier_to_terminate_path_find: 500.0
|
||||||
|
max_failed_behavior_count: 3
|
70
roles/factorio/defaults/server-settings.yml
Normal file
70
roles/factorio/defaults/server-settings.yml
Normal file
@ -0,0 +1,70 @@
|
|||||||
|
---
|
||||||
|
# Settings for the server-settings.json file
|
||||||
|
# Right now this is just an example of the default values as shown in the
|
||||||
|
# server-settings.example.json file that's provided with the factorio server
|
||||||
|
|
||||||
|
factorio_server_settings:
|
||||||
|
name: "Name of the game as it will appear in the game listing"
|
||||||
|
|
||||||
|
description: "Description of the game that will appear in the listing"
|
||||||
|
|
||||||
|
tags: ["game", "tags"]
|
||||||
|
|
||||||
|
# Maximum number of players allowed, admins can join even a full server.
|
||||||
|
# 0 means unlimited.
|
||||||
|
max_players: 0
|
||||||
|
|
||||||
|
# public: Game will be published on the official Factorio matching server
|
||||||
|
# lan: Game will be broadcast on LAN
|
||||||
|
visibility:
|
||||||
|
public: true
|
||||||
|
lan: true
|
||||||
|
|
||||||
|
# Your factorio.com login credentials. Required for games with visibility
|
||||||
|
# public
|
||||||
|
username: ""
|
||||||
|
password: ""
|
||||||
|
|
||||||
|
# Authentication token. May be used instead of 'password' above.
|
||||||
|
token: ""
|
||||||
|
|
||||||
|
game_password: ""
|
||||||
|
|
||||||
|
# When set to true, the server will only allow clients that have a valid
|
||||||
|
# Factorio.com account
|
||||||
|
require_user_verification: true
|
||||||
|
|
||||||
|
# optional, default value is 0. 0 means unlimited.",
|
||||||
|
max_upload_in_kilobytes_per_second: 0
|
||||||
|
|
||||||
|
# optional one tick is 16ms in default speed, default value is 0. 0 means no
|
||||||
|
# minimum.
|
||||||
|
minimum_latency_in_ticks: 0
|
||||||
|
|
||||||
|
# Players that played on this map already can join even when the max player
|
||||||
|
# limit was reached.
|
||||||
|
ignore_player_limit_for_returning_players: false
|
||||||
|
|
||||||
|
# possible values are, true, false and admins-only
|
||||||
|
allow_commands: "admins-only"
|
||||||
|
|
||||||
|
# Autosave interval in minutes
|
||||||
|
autosave_interval: 10
|
||||||
|
|
||||||
|
# server autosave slots, it is cycled through when the server autosaves.
|
||||||
|
autosave_slots: 5
|
||||||
|
|
||||||
|
# How many minutes until someone is kicked when doing nothing, 0 for never.
|
||||||
|
afk_autokick_interval: 0
|
||||||
|
|
||||||
|
# Whether should the server be paused when no players are present.
|
||||||
|
auto_pause: true
|
||||||
|
|
||||||
|
only_admins_can_pause_the_game: true
|
||||||
|
|
||||||
|
# Whether autosaves should be saved only on server or also on all connected
|
||||||
|
# clients. Default is true.
|
||||||
|
autosave_only_on_server: true
|
||||||
|
|
||||||
|
# List of case insensitive usernames, that will be promoted immediately
|
||||||
|
admins: []
|
8
roles/factorio/defaults/server-whitelist.yml
Normal file
8
roles/factorio/defaults/server-whitelist.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
---
|
||||||
|
# Settings for the server-whitelist.json file
|
||||||
|
# Right now this is just an example of the default values as shown in the
|
||||||
|
# server-whitelist.example.json file that's provided with the factorio server
|
||||||
|
|
||||||
|
factorio_server_whitelist:
|
||||||
|
- Rseding91
|
||||||
|
- Oxyd
|
2
roles/factorio/dev-requirements.txt
Normal file
2
roles/factorio/dev-requirements.txt
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
yamllint
|
||||||
|
molecule[docker]
|
13
roles/factorio/handlers/main.yml
Normal file
13
roles/factorio/handlers/main.yml
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
---
|
||||||
|
# handlers file for factorio
|
||||||
|
|
||||||
|
- name: Reload factorio server (daemon_reload)
|
||||||
|
systemd:
|
||||||
|
name: "{{ service_name }}"
|
||||||
|
daemon_reload: yes
|
||||||
|
|
||||||
|
- name: Restart factorio service
|
||||||
|
systemd:
|
||||||
|
name: "{{ service_name }}"
|
||||||
|
state: restarted
|
||||||
|
when: service_restart_permitted
|
21
roles/factorio/makefile
Normal file
21
roles/factorio/makefile
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
.DEFAULT_GOAL:=help
|
||||||
|
|
||||||
|
.PHONY: help deps clean build watch
|
||||||
|
|
||||||
|
help: ## Display this help
|
||||||
|
@awk 'BEGIN {FS = ":.*##"; printf "\nUsage:\n make \033[36m\033[0m\n\nTargets:\n"} /^[a-zA-Z_-]+:.*?##/ { printf " \033[36m%-10s\033[0m %s\n", $$1, $$2 }' $(MAKEFILE_LIST)
|
||||||
|
|
||||||
|
lint: ## Lint yaml files
|
||||||
|
yamllint .
|
||||||
|
|
||||||
|
test_all: ## Run molecule tests
|
||||||
|
molecule test --all
|
||||||
|
|
||||||
|
test_centos: ## Run molecule centos tests
|
||||||
|
molecule test --scenario-name centos
|
||||||
|
|
||||||
|
test_debian: ## Run molecule debian tests
|
||||||
|
molecule test --scenario-name debian
|
||||||
|
|
||||||
|
test_ubuntu: ## Run molecule ubuntu tests
|
||||||
|
molecule test --scenario-name ubuntu
|
2
roles/factorio/meta/.galaxy_install_info
Normal file
2
roles/factorio/meta/.galaxy_install_info
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
install_date: Tue Dec 22 03:10:51 2020
|
||||||
|
version: master
|
21
roles/factorio/meta/main.yml
Normal file
21
roles/factorio/meta/main.yml
Normal file
@ -0,0 +1,21 @@
|
|||||||
|
---
|
||||||
|
galaxy_info:
|
||||||
|
author: Brahm Lower
|
||||||
|
description: A role for creating Factorio servers
|
||||||
|
license: license (GPLv3)
|
||||||
|
min_ansible_version: 2.0
|
||||||
|
platforms:
|
||||||
|
- name: EL
|
||||||
|
versions:
|
||||||
|
- 8
|
||||||
|
- name: Ubuntu
|
||||||
|
versions:
|
||||||
|
- bionic
|
||||||
|
- focal
|
||||||
|
- name: Debian
|
||||||
|
version:
|
||||||
|
- stretch
|
||||||
|
- buster
|
||||||
|
galaxy_tags:
|
||||||
|
- factorio
|
||||||
|
dependencies: []
|
22
roles/factorio/molecule/centos/INSTALL.rst
Normal file
22
roles/factorio/molecule/centos/INSTALL.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
10
roles/factorio/molecule/centos/converge.yml
Normal file
10
roles/factorio/molecule/centos/converge.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: "Include ansible-factorio"
|
||||||
|
include_role:
|
||||||
|
name: "ansible-factorio"
|
||||||
|
vars:
|
||||||
|
service_name: foobar
|
||||||
|
server_version: 0.17.79
|
16
roles/factorio/molecule/centos/molecule.yml
Normal file
16
roles/factorio/molecule/centos/molecule.yml
Normal file
@ -0,0 +1,16 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
platforms:
|
||||||
|
- name: instance_centos8
|
||||||
|
image: jrei/systemd-centos:8
|
||||||
|
privileged: true
|
||||||
|
command: /sbin/init
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
9
roles/factorio/molecule/centos/verify.yml
Normal file
9
roles/factorio/molecule/centos/verify.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
# This is an example playbook to execute Ansible tests.
|
||||||
|
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Example assertion
|
||||||
|
assert:
|
||||||
|
that: true
|
22
roles/factorio/molecule/debian/INSTALL.rst
Normal file
22
roles/factorio/molecule/debian/INSTALL.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
10
roles/factorio/molecule/debian/converge.yml
Normal file
10
roles/factorio/molecule/debian/converge.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: "Include ansible-factorio"
|
||||||
|
include_role:
|
||||||
|
name: "ansible-factorio"
|
||||||
|
vars:
|
||||||
|
service_name: foobar
|
||||||
|
server_version: 0.17.79
|
22
roles/factorio/molecule/debian/molecule.yml
Normal file
22
roles/factorio/molecule/debian/molecule.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
platforms:
|
||||||
|
- name: instance_debian9
|
||||||
|
image: jrei/systemd-debian:9
|
||||||
|
privileged: true
|
||||||
|
command: /sbin/init
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
- name: instance_debian10
|
||||||
|
image: jrei/systemd-debian:10
|
||||||
|
privileged: true
|
||||||
|
command: /sbin/init
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
9
roles/factorio/molecule/debian/verify.yml
Normal file
9
roles/factorio/molecule/debian/verify.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
# This is an example playbook to execute Ansible tests.
|
||||||
|
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Example assertion
|
||||||
|
assert:
|
||||||
|
that: true
|
22
roles/factorio/molecule/ubuntu/INSTALL.rst
Normal file
22
roles/factorio/molecule/ubuntu/INSTALL.rst
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
*******
|
||||||
|
Docker driver installation guide
|
||||||
|
*******
|
||||||
|
|
||||||
|
Requirements
|
||||||
|
============
|
||||||
|
|
||||||
|
* Docker Engine
|
||||||
|
|
||||||
|
Install
|
||||||
|
=======
|
||||||
|
|
||||||
|
Please refer to the `Virtual environment`_ documentation for installation best
|
||||||
|
practices. If not using a virtual environment, please consider passing the
|
||||||
|
widely recommended `'--user' flag`_ when invoking ``pip``.
|
||||||
|
|
||||||
|
.. _Virtual environment: https://virtualenv.pypa.io/en/latest/
|
||||||
|
.. _'--user' flag: https://packaging.python.org/tutorials/installing-packages/#installing-to-the-user-site
|
||||||
|
|
||||||
|
.. code-block:: bash
|
||||||
|
|
||||||
|
$ python3 -m pip install 'molecule[docker]'
|
10
roles/factorio/molecule/ubuntu/converge.yml
Normal file
10
roles/factorio/molecule/ubuntu/converge.yml
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
---
|
||||||
|
- name: Converge
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: "Include ansible-factorio"
|
||||||
|
include_role:
|
||||||
|
name: "ansible-factorio"
|
||||||
|
vars:
|
||||||
|
service_name: foobar
|
||||||
|
server_version: 0.17.79
|
22
roles/factorio/molecule/ubuntu/molecule.yml
Normal file
22
roles/factorio/molecule/ubuntu/molecule.yml
Normal file
@ -0,0 +1,22 @@
|
|||||||
|
---
|
||||||
|
dependency:
|
||||||
|
name: galaxy
|
||||||
|
driver:
|
||||||
|
name: docker
|
||||||
|
platforms:
|
||||||
|
- name: instance_ubuntu1804
|
||||||
|
image: jrei/systemd-ubuntu:18.04
|
||||||
|
privileged: true
|
||||||
|
command: /sbin/init
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
- name: instance_ubuntu2004
|
||||||
|
image: jrei/systemd-ubuntu:20.04
|
||||||
|
privileged: true
|
||||||
|
command: /sbin/init
|
||||||
|
volumes:
|
||||||
|
- /sys/fs/cgroup:/sys/fs/cgroup:ro
|
||||||
|
provisioner:
|
||||||
|
name: ansible
|
||||||
|
verifier:
|
||||||
|
name: ansible
|
9
roles/factorio/molecule/ubuntu/verify.yml
Normal file
9
roles/factorio/molecule/ubuntu/verify.yml
Normal file
@ -0,0 +1,9 @@
|
|||||||
|
---
|
||||||
|
# This is an example playbook to execute Ansible tests.
|
||||||
|
|
||||||
|
- name: Verify
|
||||||
|
hosts: all
|
||||||
|
tasks:
|
||||||
|
- name: Example assertion
|
||||||
|
assert:
|
||||||
|
that: true
|
90
roles/factorio/tasks/main.yml
Normal file
90
roles/factorio/tasks/main.yml
Normal file
@ -0,0 +1,90 @@
|
|||||||
|
---
|
||||||
|
# tasks file for factorio
|
||||||
|
# Create the user and group to run the factorio server
|
||||||
|
- name: "{{ ansible_name_prefix }} Create OS group for factorio"
|
||||||
|
group:
|
||||||
|
name: "{{ service_group }}"
|
||||||
|
state: present
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Create OS user for factorio"
|
||||||
|
user:
|
||||||
|
name: "{{ service_user }}"
|
||||||
|
state: present
|
||||||
|
group: "{{ service_group }}"
|
||||||
|
|
||||||
|
# Download the factorio server version if needed
|
||||||
|
- name: "{{ ansible_name_prefix }} Make factorio bin source folder"
|
||||||
|
file:
|
||||||
|
path: "{{ server_sources }}"
|
||||||
|
state: directory
|
||||||
|
mode: u+rwx
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Download factorio headless server from {{ download_url }}"
|
||||||
|
get_url:
|
||||||
|
url: "{{ download_url }}"
|
||||||
|
dest: "{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
|
||||||
|
checksum: "{{ download_checksum }}"
|
||||||
|
retries: 3
|
||||||
|
delay: 5
|
||||||
|
|
||||||
|
# Copy the factorio version to the production location
|
||||||
|
- name: "{{ ansible_name_prefix }} Make factorio bin source folder"
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}"
|
||||||
|
state: directory
|
||||||
|
mode: u+rwx
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Extract Factorio headless server to {{ server_sources }}"
|
||||||
|
unarchive:
|
||||||
|
src: "{{ server_sources }}/factorio-{{ server_version }}.tar.gz"
|
||||||
|
copy: no
|
||||||
|
dest: "{{ service_root }}"
|
||||||
|
creates: "{{ service_root }}/factorio"
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Make sure game save directory exists"
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}/factorio/saves"
|
||||||
|
state: directory
|
||||||
|
mode: u+rwx
|
||||||
|
|
||||||
|
# Create the various settings files
|
||||||
|
- name: "{{ ansible_name_prefix }} Set server settings"
|
||||||
|
include: set-server-settings.yml
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Set server whitelist"
|
||||||
|
include: set-server-whitelist.yml
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Set map gen settings"
|
||||||
|
include: set-map-gen-settings.yml
|
||||||
|
|
||||||
|
- name: "{{ ansible_name_prefix }} Set map settings"
|
||||||
|
include: set-map-settings.yml
|
||||||
|
|
||||||
|
# Create the save if one doesn't already exist
|
||||||
|
- name: "{{ ansible_name_prefix }} Create default save file"
|
||||||
|
command: "{{ service_root }}/factorio/bin/x64/factorio --create {{ factorio_target_save }}"
|
||||||
|
args:
|
||||||
|
creates: "{{ factorio_target_save }}"
|
||||||
|
|
||||||
|
# Set the permissions so only the user has access
|
||||||
|
- name: "{{ ansible_name_prefix }} Make {{ service_root }} owned by {{ service_user }}"
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}"
|
||||||
|
state: directory
|
||||||
|
owner: "{{ service_user }}"
|
||||||
|
group: "{{ service_group }}"
|
||||||
|
recurse: yes
|
||||||
|
|
||||||
|
# Create the service
|
||||||
|
- name: "{{ ansible_name_prefix }} Create service file"
|
||||||
|
template:
|
||||||
|
src: service-template.service.j2
|
||||||
|
dest: /etc/systemd/system/{{ service_name }}.service
|
||||||
|
mode: "u=rwx,g=r,o=r"
|
||||||
|
vars:
|
||||||
|
bin: "{{ service_root }}/factorio/bin/x64/factorio"
|
||||||
|
save: "{{ factorio_target_save }}"
|
||||||
|
description: "Factorio {{ server_version }} {{ service_name }}"
|
||||||
|
notify:
|
||||||
|
- Reload factorio server (daemon_reload)
|
||||||
|
- Restart factorio service
|
18
roles/factorio/tasks/set-map-gen-settings.yml
Normal file
18
roles/factorio/tasks/set-map-gen-settings.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
# Set the content of map-gen-settings.json
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Create map-gen-settings.json file
|
||||||
|
copy:
|
||||||
|
content: "{{ factorio_map_gen_settings | to_json }}"
|
||||||
|
dest: "{{ service_root }}/factorio/data/map-gen-settings.json"
|
||||||
|
when: factorio_map_gen_settings_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Remove map-gen-settings.json file
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}/factorio/data/map-gen-settings.json"
|
||||||
|
state: absent
|
||||||
|
when: not factorio_map_gen_settings_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
18
roles/factorio/tasks/set-map-settings.yml
Normal file
18
roles/factorio/tasks/set-map-settings.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
# Set the content of map-settings.json
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Create map-settings.json file
|
||||||
|
copy:
|
||||||
|
content: "{{ factorio_map_settings | to_json }}"
|
||||||
|
dest: "{{ service_root }}/factorio/data/map-settings.json"
|
||||||
|
when: factorio_map_settings_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Remove map-settings.json file
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}/factorio/data/map-settings.json"
|
||||||
|
state: absent
|
||||||
|
when: not factorio_map_settings_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
25
roles/factorio/tasks/set-server-settings.yml
Normal file
25
roles/factorio/tasks/set-server-settings.yml
Normal file
@ -0,0 +1,25 @@
|
|||||||
|
---
|
||||||
|
# Set the content of server-settings.json
|
||||||
|
|
||||||
|
# Two tasks are used here as a somewhat lazy way around `factorio_server_settings`
|
||||||
|
# being passed to the `combine()` function when it hasn't been defined by the
|
||||||
|
# user. The default definition for it in defaults/main.py is an empty dict
|
||||||
|
# which for some reason results in being interpreted as undefined.
|
||||||
|
|
||||||
|
# Open a pull request if you know a better way
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Create server-settings.json file (overwriting defaults)
|
||||||
|
copy:
|
||||||
|
content: "{{ default_factorio_server_settings|combine(factorio_server_settings) | to_json }}"
|
||||||
|
dest: "{{ service_root }}/factorio/data/server-settings.json"
|
||||||
|
when: factorio_server_settings
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Create server-settings.json file (using defaults)
|
||||||
|
copy:
|
||||||
|
content: "{{ default_factorio_server_settings | to_json }}"
|
||||||
|
dest: "{{ service_root }}/factorio/data/server-settings.json"
|
||||||
|
when: not factorio_server_settings
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
18
roles/factorio/tasks/set-server-whitelist.yml
Normal file
18
roles/factorio/tasks/set-server-whitelist.yml
Normal file
@ -0,0 +1,18 @@
|
|||||||
|
---
|
||||||
|
# Set the content of server-whitelist.json
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Create server-whitelist.json file
|
||||||
|
copy:
|
||||||
|
content: "{{ factorio_server_whitelist | to_json }}"
|
||||||
|
dest: "{{ service_root }}/factorio/data/server-whitelist.json"
|
||||||
|
when: factorio_server_whitelist_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
||||||
|
|
||||||
|
- name: ({{ service_name }}) Remove server-whitelist.json file
|
||||||
|
file:
|
||||||
|
path: "{{ service_root }}/factorio/data/server-whitelist.json"
|
||||||
|
state: absent
|
||||||
|
when: not factorio_server_whitelist_enabled
|
||||||
|
notify:
|
||||||
|
- Restart factorio service
|
10
roles/factorio/templates/service-template.service.j2
Normal file
10
roles/factorio/templates/service-template.service.j2
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
[Unit]
|
||||||
|
Description={{ description }}
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
ExecStart={{ bin }} --start-server {{ save }} --port {{ service_port }} --server-settings {{ service_root }}/factorio/data/server-settings.json
|
||||||
|
User={{ service_user }}
|
||||||
|
Group={{ service_group }}
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
2
roles/factorio/vars/main.yml
Normal file
2
roles/factorio/vars/main.yml
Normal file
@ -0,0 +1,2 @@
|
|||||||
|
---
|
||||||
|
# vars file for factorio
|
@ -34,3 +34,9 @@
|
|||||||
- src: nkakouros.nextcloud
|
- src: nkakouros.nextcloud
|
||||||
version: master
|
version: master
|
||||||
name: nextcloud
|
name: nextcloud
|
||||||
|
|
||||||
|
# Game Servers
|
||||||
|
# Upstream: https://github.com/bplower/ansible-factorio
|
||||||
|
- src: bplower.factorio
|
||||||
|
version: master
|
||||||
|
name: factorio
|
||||||
|
Loading…
Reference in New Issue
Block a user