diff --git a/roles/minetest/defaults/main.yml b/roles/minetest/defaults/main.yml index adc3645d7..4ef7f52f3 100644 --- a/roles/minetest/defaults/main.yml +++ b/roles/minetest/defaults/main.yml @@ -4,3 +4,5 @@ # minetest_server_admin: Admin # All above are set in: github.com/iiab/iiab/blob/master/vars/default_vars.yml # If nec, change them by editing /etc/iiab/local_vars.yml prior to installing! +minetest_default_runas_user: Debian-minetest +minetest_default_runas_group: games diff --git a/roles/minetest/tasks/main.yml b/roles/minetest/tasks/main.yml index 318198199..85a99df9d 100644 --- a/roles/minetest/tasks/main.yml +++ b/roles/minetest/tasks/main.yml @@ -3,7 +3,7 @@ path: "{{ minetest_world_dir }}/world.mt" register: minetest_world -- name: Create dirs /etc/minetest and /library/games +- name: Create /library/games file: state: directory path: "{{ item }}" @@ -11,9 +11,7 @@ group: root mode: 0755 with_items: - - /etc/minetest - /library/games - - /var/log/minetest when: minetest_install # rpi only @@ -43,32 +41,19 @@ url: https://github.com/Uberi/Minetest-WorldEdit/archive/master.zip when: minetest_install -- name: Create /etc/minetest/minetest.conf and minetest-serve.service - template: - backup: no - src: "{{ item.src }}" - dest: "{{ item.dest }}" - owner: root - group: root - mode: 0644 - with_items: - - { src: 'minetest.conf.j2', dest: '/etc/minetest/minetest.conf' } - - { src: 'minetest-serve.service.j2', dest: '/etc/systemd/system/minetest-serve.service' } - when: minetest_install - # enable or disable -- name: Enable & Restart 'minetest-serve' service +- name: Enable & Restart 'minetest-server' service systemd: daemon_reload: yes - name: minetest-serve + name: minetest-server enabled: yes state: restarted when: minetest_install and minetest_enabled -- name: Disable 'minetest-serve' service +- name: Disable 'minetest-server' service systemd: daemon_reload: yes - name: minetest-serve + name: minetest-server enabled: no state: stopped when: minetest_install and not minetest_enabled diff --git a/roles/minetest/tasks/minetest_install.yml b/roles/minetest/tasks/minetest_install.yml index 099a88452..f539d689f 100644 --- a/roles/minetest/tasks/minetest_install.yml +++ b/roles/minetest/tasks/minetest_install.yml @@ -3,5 +3,34 @@ - name: Install Minetest package package: - name: minetest + name: minetest-server state: present + +- name: Add some parameters to /etc/minetest/minetest.conf that was automatically created + lineinfile: + path: /etc/minetest/minetest.conf + regexp: "{{ item.regexp }}" + line: "{{ item.line }}" + with_items: + - { regexp: '^server_name = ', line: 'server_name = Internet in a Box Minetest Server' } + - { regexp: '^name = ', line: 'name = Admin' } + - { regexp: '^creative_mode = ', line: 'creative_mode = true' } + - { regexp: '^port = ', line: 'port = {{ minetest_port }}' } + +- name: Create /library/games/minetest/worlds/world + file: + state: directory + path: "{{ item }}" + owner: "{{ minetest_default_runas_user }}" + group: "{{ minetest_default_runas_group }}" + mode: 0755 + with_items: + - "{{ minetest_world_dir }}" + +- name: Change exec line in generated unit file + lineinfile: + path: /lib/systemd/system/minetest-server.service + regexp: "{{ item.regexp }}" + line: "{{ item.line }}" + with_items: + - { regexp: '^ExecStart=/usr/lib/minetest/minetestserver', line: 'ExecStart=/usr/lib/minetest/minetestserver --config /etc/minetest/minetest.conf --logfile /var/log/minetest/minetest.log --world "{{ minetest_world_dir }}"' } diff --git a/roles/minetest/tasks/rpi_minetest_install.yml b/roles/minetest/tasks/rpi_minetest_install.yml index 8fc0758d4..a87d58c40 100644 --- a/roles/minetest/tasks/rpi_minetest_install.yml +++ b/roles/minetest/tasks/rpi_minetest_install.yml @@ -5,23 +5,47 @@ name: libhiredis-dev state: present -- name: Download Minetest {{ rpi_src_url }} for RPi +- name: Download Minetest {{ minetest_rpi_src_url }} for RPi get_url: - url: "{{ rpi_src_url }}" - dest: "{{ downloads_dir }}/{{ rpi_src }}" + url: "{{ minetest_rpi_src_url }}" + dest: "{{ downloads_dir }}/{{ minetest_rpi_src }}" timeout: "{{ download_timeout }}" +- name: Create dirs /etc/minetest and /library/games + file: + state: directory + path: "{{ item }}" + owner: root + group: root + mode: 0755 + with_items: + - /etc/minetest + - /var/log/minetest + - name: Extract {{ downloads_dir }}/{{ rpi_src }} into /library/games unarchive: - src: "{{ downloads_dir }}/{{ rpi_src }}" + src: "{{ downloads_dir }}/{{ minetest_rpi_src }}" dest: /library/games - owner: "{{ minetest_runas_user }}" - group: "{{ minetest_runas_group }}" + owner: root + group: root - name: Create symbolic link /library/games/minetest file: state: link src: /library/games/0.4.17.1 dest: /library/games/minetest - owner: "{{ minetest_runas_user }}" - group: "{{ minetest_runas_group }}" + owner: root + group: root + +- name: Create /etc/minetest/minetest.conf and minetest-server.service + template: + backup: no + src: "{{ item.src }}" + dest: "{{ item.dest }}" + owner: root + group: root + mode: 0644 + with_items: + - { src: 'minetest.conf.j2', dest: '/etc/minetest/minetest.conf' } + - { src: 'minetest-serve.service.j2', dest: '/etc/systemd/system/minetest-server.service' } + when: minetest_install diff --git a/roles/minetest/templates/minetest-serve.service.j2 b/roles/minetest/templates/minetest-serve.service.j2 index 7755242d1..6b6030729 100644 --- a/roles/minetest/templates/minetest-serve.service.j2 +++ b/roles/minetest/templates/minetest-serve.service.j2 @@ -4,9 +4,11 @@ After=network.target [Service] Type=simple -WorkingDirectory={{ minetest_working_dir }} ExecStart={{ minetest_server_bin }} --port {{ minetest_port }} --config {{ minetest_config_file }} --logfile /var/log/minetest/minetest.log --world {{ minetest_world_dir }} Restart=on-abort +RestartSec=5s +TimeoutStartSec=900 + [Install] WantedBy=multi-user.target