1
0
Fork 0
mirror of https://github.com/iiab/iiab.git synced 2025-02-15 04:32:11 +00:00

minetest for rpi initial checkin

This commit is contained in:
Tim Moody 2019-02-06 11:41:24 -05:00
parent 31715f1633
commit c8227ef3c4
8 changed files with 339 additions and 0 deletions

View 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

View 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

View 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 }}"

View 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

View 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

View 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'}

View 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

View 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