ansible/roles/factorio/tasks/main.yml
2020-12-21 21:19:47 -06:00

91 lines
2.8 KiB
YAML

---
# 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