mirror of
https://github.com/iiab/iiab.git
synced 2025-02-14 20:22:08 +00:00
minetest for rpi initial checkin
This commit is contained in:
parent
31715f1633
commit
c8227ef3c4
8 changed files with 339 additions and 0 deletions
10
roles/minetest/defaults/main.yml
Normal file
10
roles/minetest/defaults/main.yml
Normal file
|
@ -0,0 +1,10 @@
|
|||
minetest_runas_user: minetest
|
||||
minetest_runas_group: minetest
|
||||
|
||||
minetest_port: 30000
|
||||
minetest_config_file: /etc/minetest/minetest.conf
|
||||
minetest_server_admin: Admin
|
||||
|
||||
# Installation Variables
|
||||
minetest_install: False
|
||||
minetest_enabled: False
|
13
roles/minetest/tasks/calc_vars.yml
Normal file
13
roles/minetest/tasks/calc_vars.yml
Normal file
|
@ -0,0 +1,13 @@
|
|||
# For rpi installs
|
||||
|
||||
- name: Set some facts for rpi
|
||||
set_fact:
|
||||
minetest_server_bin: /library/games/minetest/bin/minetestserver
|
||||
minetest_world_dir: /library/games/minetest/worlds/world
|
||||
minetest_game_dir: /library/games/minetest/games/minetest_game
|
||||
# only works if server run as root
|
||||
minetest_runas_user: root
|
||||
minetest_runas_group: root
|
||||
when: is_rpi
|
||||
|
||||
# For other installs TBD
|
95
roles/minetest/tasks/main.yml
Normal file
95
roles/minetest/tasks/main.yml
Normal file
|
@ -0,0 +1,95 @@
|
|||
# Give message and end play for unsupported platforms
|
||||
# For now only support rpi
|
||||
|
||||
- name: No install except Raspberry Pi for now
|
||||
debug:
|
||||
msg: "No install except Raspberry Pi for now."
|
||||
when: not is_rpi
|
||||
|
||||
- name: Terminate play
|
||||
meta: end_play
|
||||
when: not is_rpi
|
||||
|
||||
- include_tasks: calc_vars.yml
|
||||
|
||||
- name: Ensure group minetest exists
|
||||
group:
|
||||
name: "{{ minetest_runas_group }}"
|
||||
state: present
|
||||
when: minetest_runas_user != 'root'
|
||||
|
||||
- name: Create minetest user
|
||||
user:
|
||||
name: "{{ minetest_runas_user }}"
|
||||
groups: "{{ minetest_runas_group }}"
|
||||
state: present
|
||||
createhome: no
|
||||
shell: /bin/false
|
||||
when: minetest_runas_user != 'root'
|
||||
|
||||
- name: Check for minetest world file
|
||||
stat:
|
||||
path: "{{ minetest_world_dir }}/world.mt"
|
||||
register: minetest_world
|
||||
|
||||
# rpi only
|
||||
- include_tasks: rpi_minetest_install.yml
|
||||
when: minetest_install and not minetest_world.stat.exists and is_rpi
|
||||
|
||||
# not rpi
|
||||
- include_tasks: minetest_install.yml
|
||||
when: minetest_install and not minetest_world.stat.exists and not is_rp
|
||||
|
||||
# Install mods
|
||||
- include: minetest_install_mods.yml
|
||||
with_items:
|
||||
- name: moreblocks
|
||||
url: https://github.com/minetest-mods/moreblocks/archive/master.zip
|
||||
- name: moreores
|
||||
url: https://github.com/Calinou/moreores/archive/master.zip
|
||||
- name: basic_materials
|
||||
url: https://gitlab.com/VanessaE/basic_materials/-/archive/master/basic_materials-master.zip
|
||||
- name: mesecons
|
||||
url: https://github.com/minetest-mods/mesecons/archive/master.zip
|
||||
- name: digilines
|
||||
url: https://github.com/minetest-mods/digilines/archive/master.zip
|
||||
- name: pipeworks
|
||||
url: https://github.com/minetest-mods/pipeworks/archive/master.zip
|
||||
- name: Minetest-WorldEdit
|
||||
url: https://github.com/Uberi/Minetest-WorldEdit/archive/master.zip
|
||||
when: minetest_install
|
||||
|
||||
# enable or disable
|
||||
- name: Enable & Restart 'minetest-serve' service
|
||||
service:
|
||||
name: minetest-serve
|
||||
enabled: yes
|
||||
state: restarted
|
||||
when: minetest_install and minetest_enabled
|
||||
|
||||
- name: Disable 'minetest-serve' service
|
||||
service:
|
||||
name: minetest-serve
|
||||
enabled: no
|
||||
state: stopped
|
||||
when: minetest_install and not minetest_enabled
|
||||
|
||||
- name: Add 'minetest' variable values to {{ iiab_ini_file }}
|
||||
ini_file:
|
||||
path: "{{ iiab_ini_file }}"
|
||||
section: minetest
|
||||
option: "{{ item.option }}"
|
||||
value: "{{ item.value }}"
|
||||
with_items:
|
||||
- option: name
|
||||
value: Minetest Server
|
||||
- option: description
|
||||
value: '"Well known game Minetest."'
|
||||
- option: minetest_world_dir
|
||||
value: "{{ minetest_world_dir }}"
|
||||
- option: minetest_port
|
||||
value: "{{ minetest_port }}"
|
||||
- option: minetest_enabled
|
||||
value: "{{ minetest_enabled }}"
|
||||
- option: minetest_world_dir
|
||||
value: "{{ minetest_world_dir }}"
|
76
roles/minetest/tasks/minetest_install.yml
Normal file
76
roles/minetest/tasks/minetest_install.yml
Normal file
|
@ -0,0 +1,76 @@
|
|||
# For non-rpi installs
|
||||
# Still a work in progress
|
||||
|
||||
- name: Set some facts
|
||||
set_fact:
|
||||
minetest_server_bin: /usr/lib/minetest/minetestserver
|
||||
# minetest_world_dir: /var/games/minetest-server/.minetest/worlds/world/ should be in library
|
||||
minetest_mods_dir: /usr/share/games/minetest_game/mods/
|
||||
|
||||
- name: Ensure group minetest exists
|
||||
group:
|
||||
name: "{{ minetest_runas_group }}"
|
||||
state: present
|
||||
|
||||
- name: Create minetest user
|
||||
user:
|
||||
name: "{{ minetest_runas_user }}"
|
||||
groups: "{{ minetest_runas_group }}"
|
||||
state: present
|
||||
createhome: no
|
||||
|
||||
- name: Create minetest world directory
|
||||
file: path={{ item }}
|
||||
mode=0755
|
||||
owner={{ minetest_runas_user }}
|
||||
group={{ minetest_runas_group }}
|
||||
state=directory
|
||||
with_items:
|
||||
- "{{ minetest_world_dir }}"
|
||||
|
||||
- name: Install minetest package
|
||||
debug:
|
||||
msg: "No install except Raspberry Pi for now."
|
||||
when: not is_rpi
|
||||
|
||||
- name: Download minetest if not package
|
||||
get_url:
|
||||
url: "{{ rpi_src_url }}"
|
||||
dest: "{{ downloads_dir }}/{{ rpi_src }}"
|
||||
timeout: "{{ download_timeout }}"
|
||||
when: is_rpi
|
||||
|
||||
- name: Install minetest if not package
|
||||
debug:
|
||||
msg: "placeholder."
|
||||
when: is_rpi
|
||||
|
||||
- name: Create /etc/minetest
|
||||
file: path={{ item }}
|
||||
mode=0755
|
||||
owner=root
|
||||
group=root
|
||||
state=directory
|
||||
with_items:
|
||||
- /etc/minetest
|
||||
|
||||
# - name: move files to world dir
|
||||
|
||||
- name: Change binary name if not rpi
|
||||
set_fact:
|
||||
minetest_server_bin: /usr/bin/minetest-server
|
||||
when: not is_rpi
|
||||
|
||||
- name: Create minetest-server service and minetest.conf file
|
||||
template:
|
||||
backup: no
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "{{ item.mode }}"
|
||||
with_items:
|
||||
- { src: 'minetest.conf.j2', dest: '/etc/minetest/minetest.conf', mode: '0644'}
|
||||
- { src: 'minetest-serve.service.j2', dest: '/etc/systemd/system/minetest-serve.service', mode: '0644'}
|
||||
|
||||
# - name: Start minetest
|
28
roles/minetest/tasks/minetest_install_mods.yml
Normal file
28
roles/minetest/tasks/minetest_install_mods.yml
Normal file
|
@ -0,0 +1,28 @@
|
|||
- name: Check if mod already installed
|
||||
stat:
|
||||
path: "{{ minetest_game_dir }}/mods/{{ item.name }}"
|
||||
register: minetest_mod
|
||||
|
||||
- name: Download one minetest mod
|
||||
get_url:
|
||||
url: "{{item.url}}"
|
||||
dest: "{{ downloads_dir }}/{{ item.name }}.zip"
|
||||
mode: 0440
|
||||
when: not minetest_mod.stat.exists
|
||||
|
||||
- name: Extract mod into mods of current game
|
||||
unarchive:
|
||||
src: "{{ downloads_dir }}/{{ item.name }}.zip"
|
||||
dest: "{{ minetest_game_dir }}/mods"
|
||||
owner: "{{ minetest_runas_user }}"
|
||||
group: "{{ minetest_runas_group }}"
|
||||
when: not minetest_mod.stat.exists
|
||||
|
||||
- name: Check if mod name has 'master' in it
|
||||
stat:
|
||||
path: "{{ minetest_game_dir }}/mods/{{ item.name }}-master"
|
||||
register: minetest_mod_master
|
||||
|
||||
- name: Rename mod to canonical name if has '-master' in name
|
||||
command: mv "{{ minetest_game_dir }}/mods/{{ item.name }}-master" "{{ minetest_game_dir }}/mods/{{ item.name }}"
|
||||
when: minetest_mod_master.stat.exists
|
71
roles/minetest/tasks/rpi_minetest_install.yml
Normal file
71
roles/minetest/tasks/rpi_minetest_install.yml
Normal file
|
@ -0,0 +1,71 @@
|
|||
# For rpi installs
|
||||
|
||||
- name: Set some facts
|
||||
set_fact:
|
||||
rpi_src_url: http://www.nathansalapat.com/downloads/0.4.17.1.tar.gz
|
||||
rpi_src: minetest-0.4.17.1.tar.gz
|
||||
|
||||
- name: Install packages for minetest
|
||||
package:
|
||||
name: "{{ item }}"
|
||||
state: present
|
||||
with_items:
|
||||
- libhiredis-dev
|
||||
|
||||
#- name: Minetest already installed - terminate play
|
||||
# meta: end_play
|
||||
# when: minetest_world.stat.exists
|
||||
|
||||
- name: Download minetest for rpi
|
||||
get_url:
|
||||
url: "{{ rpi_src_url }}"
|
||||
dest: "{{ downloads_dir }}/{{ rpi_src }}"
|
||||
timeout: "{{ download_timeout }}"
|
||||
|
||||
- name: Create /etc/minetest and /library/games directories
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
mode: 0755
|
||||
owner: root
|
||||
group: root
|
||||
state: directory
|
||||
with_items:
|
||||
- /etc/minetest
|
||||
- /library/games
|
||||
|
||||
- name: Create /var/log/minetest directory
|
||||
file:
|
||||
path: "{{ item }}"
|
||||
mode: 0755
|
||||
owner: "{{ minetest_runas_user }}"
|
||||
group: "{{ minetest_runas_group }}"
|
||||
state: directory
|
||||
with_items:
|
||||
- /var/log/minetest
|
||||
|
||||
- name: Extract minetest into /library/games
|
||||
unarchive:
|
||||
src: "{{ downloads_dir }}/{{ rpi_src }}"
|
||||
dest: /library/games
|
||||
owner: "{{ minetest_runas_user }}"
|
||||
group: "{{ minetest_runas_group }}"
|
||||
|
||||
- name: Create symbolic link
|
||||
file:
|
||||
src: /library/games/0.4.17.1
|
||||
dest: /library/games/minetest
|
||||
owner: "{{ minetest_runas_user }}"
|
||||
group: "{{ minetest_runas_group }}"
|
||||
state: link
|
||||
|
||||
- name: Create minetest-server service and minetest.conf file
|
||||
template:
|
||||
backup: no
|
||||
src: "{{ item.src }}"
|
||||
dest: "{{ item.dest }}"
|
||||
owner: root
|
||||
group: root
|
||||
mode: "{{ item.mode }}"
|
||||
with_items:
|
||||
- { src: 'minetest.conf.j2', dest: '/etc/minetest/minetest.conf', mode: '0644'}
|
||||
- { src: 'minetest-serve.service.j2', dest: '/etc/systemd/system/minetest-serve.service', mode: '0644'}
|
14
roles/minetest/templates/minetest-serve.service.j2
Normal file
14
roles/minetest/templates/minetest-serve.service.j2
Normal file
|
@ -0,0 +1,14 @@
|
|||
[Unit]
|
||||
Description=Minetest Server
|
||||
After=network.target
|
||||
|
||||
[Service]
|
||||
Type=simple
|
||||
User={{ minetest_runas_user }}
|
||||
Group={{ minetest_runas_group }}
|
||||
WorkingDirectory=/library/games/minetest
|
||||
ExecStart={{ minetest_server_bin }} --port {{ minetest_port }} --config {{ minetest_config_file }} --logfile /var/log/minetest/minetest.log --world {{ minetest_world_dir }}
|
||||
Restart=on-abort
|
||||
|
||||
[Install]
|
||||
WantedBy=multi-user.target
|
32
roles/minetest/templates/minetest.conf.j2
Normal file
32
roles/minetest/templates/minetest.conf.j2
Normal file
|
@ -0,0 +1,32 @@
|
|||
# Admin name
|
||||
name = {{ minetest_server_admin }}
|
||||
|
||||
# Name of server
|
||||
server_name = Internet in a Box Minetest Server
|
||||
|
||||
# Automaticaly report to masterserver
|
||||
# set to true for public servers
|
||||
server_announce = false
|
||||
|
||||
# Default game (default when creating a new world)
|
||||
default_game = minetest
|
||||
|
||||
# Maximum number of players connected simultaneously
|
||||
max_users = 15
|
||||
|
||||
# Whether to enable players killing each other
|
||||
enable_pvp = false
|
||||
|
||||
# Set to true to enable creative mode (unlimited inventory)
|
||||
creative_mode = true
|
||||
|
||||
# Enable players getting damage and dying
|
||||
enable_damage = true
|
||||
|
||||
# Available privileges: interact, shout, teleport, settime, privs, ...
|
||||
# See /privs in game for a full list on your server and mod configuration.
|
||||
default_privs = interact, shout, teleport, settime, privs
|
||||
|
||||
# For mods
|
||||
spawn_friendly_mobs = true
|
||||
spawn_hostile_mobs = false
|
Loading…
Reference in a new issue