factorio-ansible/setup.yml

99 lines
3.0 KiB
YAML

---
- name: Setup Factorio
hosts: all
remote_user: root
tasks:
- name: check if factorio download exists on the server
stat:
path: "/opt/factorio-{{ factorio_version }}.tar.gz"
register: factorio_download
- name: "Download Factorio Version {{ factorio_version }}"
get_url:
url: "https://www.factorio.com/get-download/{{ factorio_version }}/headless/linux64"
dest: "/opt/factorio-{{ factorio_version }}.tar.gz"
mode: '0440'
when: factorio_download.stat.exists == False
- name: check if factorio exists on the server
stat:
path: "/opt/factorio"
register: factorio
- name: Extract Factorio
ansible.builtin.unarchive:
src: "/opt/factorio-{{ factorio_version }}.tar.gz"
dest: "/opt/"
remote_src: yes
when: factorio.stat.exists == False
- name: Upload factorio-mod-downloader to server
ansible.builtin.copy:
src: ./factorio-mod-downloader/mod-downloader.py
dest: /opt/mod-downloader.py
mode: '0644'
- name: Create the mod directory
ansible.builtin.file:
path: /opt/factorio/mods
state: directory
mode: '0755'
- name: Download Mod
ansible.builtin.shell: "python3 /opt/mod-downloader.py \"{{ item }}\" latest {{ factorio_username }} {{ factorio_password }}"
args:
chdir: /opt/factorio/mods/
loop: "{{ mods }}"
- name: Check if Map exists on server
stat:
path: "/opt/factorio/saves/my-save.zip"
register: mapPreExists
- name: Upload Saved file from locale disk to server
ansible.builtin.copy:
src: "./saves/{{ inventory_hostname }}/opt/factorio/saves/my-save.zip"
dest: /opt/factorio/saves/my-save.zip
failed_when: False
when: mapPreExists.stat.exists == False
- name: Check if Map exists on server
stat:
path: "/opt/factorio/saves/my-save.zip"
register: map
- name: Template a file to /opt/factorio/map-gen-settings.json
ansible.builtin.template:
src: map-gen-settings.json.j2
dest: /opt/factorio/map-gen-settings.json
when: map.stat.exists == False
- name: Template a file to /opt/factorio/map-settings.json
ansible.builtin.template:
src: map-settings.json.j2
dest: /opt/factorio/map-settings.json
when: map.stat.exists == False
- name: Generate new Map
ansible.builtin.shell: "./bin/x64/factorio --create saves/my-save.zip --map-gen-settings map-gen-settings.json --map-settings map-settings.json"
args:
chdir: /opt/factorio/
when: map.stat.exists == False
- name: Template a file to /opt/factorio/server-settings.json
ansible.builtin.template:
src: server-settings.json.j2
dest: /opt/factorio/server-settings.json
- name: Template a file to /etc/systemd/system/factorio.service
ansible.builtin.template:
src: factorio.service.j2
dest: /etc/systemd/system/factorio.service
- name: Restart factorio
ansible.builtin.systemd:
state: restarted
daemon_reload: yes
name: factorio