diff options
| -rw-r--r-- | host_vars/vm0.yml | 7 | ||||
| -rw-r--r-- | playbooks/vm0.rgoncalves.se.yml | 3 | ||||
| -rw-r--r-- | roles/factorio/files/server-settings.json | 41 | ||||
| -rw-r--r-- | roles/factorio/tasks/main.yml | 69 | ||||
| -rw-r--r-- | roles/factorio/vars/main.yml | 9 | 
5 files changed, 128 insertions, 1 deletions
diff --git a/host_vars/vm0.yml b/host_vars/vm0.yml index 781eeda..2b372a9 100644 --- a/host_vars/vm0.yml +++ b/host_vars/vm0.yml @@ -14,7 +14,14 @@ services:    - name: "minecraft"      proto: "tcp"      port: "25565" +    public: true    - name: "minecraft"      proto: "udp"      port: "25565" +    public: true + +  - name: "factorio" +    proto: "udp" +    port: "34197" +    public: true diff --git a/playbooks/vm0.rgoncalves.se.yml b/playbooks/vm0.rgoncalves.se.yml index da1862d..5e9ca4a 100644 --- a/playbooks/vm0.rgoncalves.se.yml +++ b/playbooks/vm0.rgoncalves.se.yml @@ -8,6 +8,7 @@  - hosts: vm0    roles: +    - { role: alpine_glibc }      - { role: minecraft } -    # - { role: factorio } +    - { role: factorio }      # - { role: stationeers } diff --git a/roles/factorio/files/server-settings.json b/roles/factorio/files/server-settings.json new file mode 100644 index 0000000..71d8a9e --- /dev/null +++ b/roles/factorio/files/server-settings.json @@ -0,0 +1,41 @@ +{ +	"name": "<rgoncalves.se> coal factory D:", +	"description": "We need more coal", +	"tags": ["game", "tags"], + +	"max_players": 8, + +	"visibility": +	{ +		"public": false, +		"lan": true +	}, + +	"username": "", +	"password": "", +	"token": "", + +	"game_password": "", +	"require_user_verification": true, + +	"max_upload_in_kilobytes_per_second": 0, +	"max_upload_slots": 5, + +	"minimum_latency_in_ticks": 0, +	"ignore_player_limit_for_returning_players": false, + +	"allow_commands": "admins-only", +	"autosave_interval": 10, +	"autosave_slots": 5, + +	"afk_autokick_interval": 10, +	"auto_pause": true, + +	"only_admins_can_pause_the_game": true, +	"non_blocking_saving": false, + +	"minimum_segment_size": 25, +	"minimum_segment_size_peer_count": 20, +	"maximum_segment_size": 100, +	"maximum_segment_size_peer_count": 10 +} diff --git a/roles/factorio/tasks/main.yml b/roles/factorio/tasks/main.yml new file mode 100644 index 0000000..3c23569 --- /dev/null +++ b/roles/factorio/tasks/main.yml @@ -0,0 +1,69 @@ + +# factorio ~~ roles/factorio/tasks/main.yml +# factorio gameserver + +--- + +- name: create factorio group +  group: +    name: "{{ factorio_group }}" +    state: present + +- name: create factorio user +  user: +    name: "{{ factorio_user }}" +    group: "{{ factorio_group }}" +    state: present + +- name: create factorio directory +  file: +    path: "{{ factorio_dir }}" +    owner: "{{ factorio_user }}" +    group: "{{ factorio_group }}" +    state: directory +    mode: 0700 + +- name: download latest factorio server +  get_url: +    url: https://factorio.com/get-download/latest/headless/linux64 +    dest: "{{ factorio_dir }}/factorio.tar.gz" +    owner: "{{ factorio_user }}" +    group: "{{ factorio_group }}" +    mode: 0600 +  register: archive + +- name: untar factorio server +  unarchive: +    src: "{{ factorio_dir }}/factorio.tar.gz" +    dest: "{{ factorio_dir }}" +    extra_opts: +      - --strip-components=1 +    remote_src: true +  when: archive.changed + +- name: deploy server settings +  copy: +    src: server-settings.json +    dest: "{{ factorio_dir }}/data/server-settings.json" +    owner: "{{ factorio_user }}" +    group: "{{ factorio_group }}" +    mode: 0600 + +- name: ensure default world does not exist +  stat: path="{{ factorio_dir }}/{{ factorio_world }}" +  register: world + +- name: create default world +  shell: ./bin/x64/factorio --create "{{ factorio_world }}" +  args: +    chdir: "{{ factorio_dir }}" +  when: world.stat.islnk is not defined + +- name: enable and start rc script +  include_role: name=rc +  vars: +    rc_cmd: "{{ factorio_dir }}/bin/x64/factorio" +    rc_args: --server-settings server-settings.json --start-server "{{ factorio_world }}" +    rc_user: "{{ factorio_user }}:{{ factorio_group }}" +    rc_dir: "{{ factorio_dir }}" +    rc_name: factorio diff --git a/roles/factorio/vars/main.yml b/roles/factorio/vars/main.yml new file mode 100644 index 0000000..41b1e34 --- /dev/null +++ b/roles/factorio/vars/main.yml @@ -0,0 +1,9 @@ + +# factorio ~~ roles/factorio/vars/main.yml + +--- + +factorio_user: "factorio" +factorio_group: "factorio" +factorio_dir: "/data/factorio" +factorio_world: "saves/world.zip"  |