aboutsummaryrefslogtreecommitdiff
path: root/roles/factorio/tasks/main.yml
blob: 95de06c933978fb4c5f8743a666c3b04cab41641 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
---
- name: create user
  user:
    name: factorio
    home: /opt/factorio
    create_home: yes
    shell: /bin/bash
    state: present
  become: yes

- name: Get Version
  uri:
    url: https://factorio.com/api/latest-releases
    method: GET
    return_content: yes
  delegate_to: localhost
  register: factorio_api_latest
  when: factorio_version is not defined

- name: Set Version
  set_fact:
    factorio_version: '{{ (factorio_api_latest.content | from_json).stable.headless }}'
    cachaeble: no
  when: factorio_version is not defined

- name: Install runscript
  copy:
    src: run.sh
    dest: /opt/factorio/run.sh
    mode: '750'
    owner: factorio
    group: factorio
  become: yes
  notify:
    - Handle systemd

- name: Install running config
  copy:
    content: |
      SAVEFILE={{ factorio_save }}
    dest: /opt/factorio/cfg.sh
    owner: factorio
    group: factorio
  become: yes
  notify:
    - Handle systemd

- name: Install JSON configs
  copy:
    content: '{{ factorio_config[item] | to_json }}'
    dest: '/opt/factorio/{{ item }}-config.json'
    owner: factorio
    group: factorio
  become: yes
  notify:
    - Handle systemd
  loop:
    - mapgen
    - map
    - server

- name: Install admin file
  copy:
    content: '{{ factorio_admins | to_json }}'
    dest: '/opt/factorio/factorio/server-adminlist.json'
    owner: factorio
    group: factorio
  become: yes
  notify:
    - Handle systemd

- name: systemd units
  copy:
    dest: '/etc/systemd/system/factorio.service'
    src: factorio.service
  become: yes
  notify:
    - Handle systemd

- name: Determine factorio version
  slurp:
    src: /opt/factorio/factorio/data/base/info.json
  register: factorio_current_version
  ignore_errors: yes

- name: assert version
  assert:
    that:
      - not factorio_current_version.failed
      - (factorio_current_version.content | b64decode | from_json).version is version( factorio_version, '>=')
  ignore_errors: yes
  register: version_check

- name: Install new factorio version
  include_tasks: update.yml
  when: version_check.failed