Add TES3MP server
This commit is contained in:
parent
dccb7419ac
commit
85ecd8fa68
@ -187,3 +187,12 @@ snmp:
|
|||||||
36666136663930663463373731663534316232643637623732346331383737643233626235613439
|
36666136663930663463373731663534316232643637623732346331383737643233626235613439
|
||||||
3733366462613133620a386336303434303130313636356339633939623638366236346234376566
|
3733366462613133620a386336303434303130313636356339633939623638366236346234376566
|
||||||
65386530663137393830636134653632623366333837616364396161666464613166
|
65386530663137393830636134653632623366333837616364396161666464613166
|
||||||
|
|
||||||
|
## VIDYA
|
||||||
|
# tes3mp
|
||||||
|
tes3mp:
|
||||||
|
name: "main"
|
||||||
|
server:
|
||||||
|
maxplayers: 8
|
||||||
|
name: "9iron TES3MP"
|
||||||
|
password: "dicks"
|
||||||
|
@ -61,3 +61,4 @@ all:
|
|||||||
38313431663734343931333462316633643935353038313934663466303834636533616165353961
|
38313431663734343931333462316633643935353038313934663466303834636533616165353961
|
||||||
6438356265656532396363323532616437353831613261323037
|
6438356265656532396363323532616437353831613261323037
|
||||||
hosts:
|
hosts:
|
||||||
|
tes3mp1.9iron.club
|
||||||
|
@ -5,6 +5,22 @@
|
|||||||
roles:
|
roles:
|
||||||
- role: base-backups
|
- role: base-backups
|
||||||
tags: [ backups ]
|
tags: [ backups ]
|
||||||
|
- hosts: tes3mp1.9iron.club
|
||||||
|
roles:
|
||||||
|
- role: tes3mp
|
||||||
|
tags: [ tes3mp ]
|
||||||
|
tasks:
|
||||||
|
- name: Assure CNAME record
|
||||||
|
route53:
|
||||||
|
state: present
|
||||||
|
overwrite: yes
|
||||||
|
zone: 9iron.club
|
||||||
|
type: CNAME
|
||||||
|
record: tes3mp.9iron.club
|
||||||
|
ttl: 300
|
||||||
|
value: [ "{{ inventory_hostname }}." ]
|
||||||
|
become: yes
|
||||||
|
tags: [ dns ]
|
||||||
#- hosts: game1.9iron.club
|
#- hosts: game1.9iron.club
|
||||||
# roles:
|
# roles:
|
||||||
# - role: base-backups
|
# - role: base-backups
|
||||||
|
14
roles/tes3mp/defaults/main.yml
Normal file
14
roles/tes3mp/defaults/main.yml
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#!/usr/bin/ansible-playbook
|
||||||
|
# vim:ft=ansible:
|
||||||
|
tes3mp:
|
||||||
|
archive: "https://github.com/TES3MP/openmw-tes3mp/releases/download/0.7.0-alpha/tes3mp-server-GNU+Linux-x86_64-release-0.7.0-alpha-abc4090a0f-01d297f5c6.tar.gz"
|
||||||
|
dest: /opt/tes3mp
|
||||||
|
server:
|
||||||
|
name: My TES3MP server
|
||||||
|
maxplayers: 64
|
||||||
|
password: dicks
|
||||||
|
port: 25565
|
||||||
|
master:
|
||||||
|
enabled: "true"
|
||||||
|
host: master.tes3mp.com
|
||||||
|
port: 25561
|
8
roles/tes3mp/handlers/main.yml
Normal file
8
roles/tes3mp/handlers/main.yml
Normal file
@ -0,0 +1,8 @@
|
|||||||
|
#!/usr/bin/ansible-playbook
|
||||||
|
# vim:ft=ansible:
|
||||||
|
---
|
||||||
|
- name: "restart tes3mp {{ tes3mp.name }}"
|
||||||
|
systemd:
|
||||||
|
name: "tes3mp@{{ tes3mp.name }}"
|
||||||
|
state: restarted
|
||||||
|
become: yes
|
67
roles/tes3mp/tasks/main.yml
Normal file
67
roles/tes3mp/tasks/main.yml
Normal file
@ -0,0 +1,67 @@
|
|||||||
|
#!/usr/bin/ansible-playbook
|
||||||
|
# vim:ft=ansible:
|
||||||
|
---
|
||||||
|
- name: Set up TES3MP
|
||||||
|
block:
|
||||||
|
- name: Set up system
|
||||||
|
block:
|
||||||
|
- name: Create user
|
||||||
|
user:
|
||||||
|
name: tes3mp
|
||||||
|
password: "!"
|
||||||
|
system: yes
|
||||||
|
home: "{{ tes3mp.dest }}"
|
||||||
|
- name: Template out service
|
||||||
|
template:
|
||||||
|
src: "tes3mp@.service"
|
||||||
|
dest: "/etc/systemd/system/tes3mp@.service"
|
||||||
|
register: t_service
|
||||||
|
- name: Reload daemons
|
||||||
|
systemd:
|
||||||
|
daemon_reload: yes
|
||||||
|
when: t_service is changed
|
||||||
|
- name: Set up TES3MP
|
||||||
|
block:
|
||||||
|
- name: Create server directory
|
||||||
|
file:
|
||||||
|
path: "{{ tes3mp.dest }}/{{ tes3mp.name }}"
|
||||||
|
state: directory
|
||||||
|
owner: tes3mp
|
||||||
|
group: tes3mp
|
||||||
|
- name: Download archive
|
||||||
|
get_url:
|
||||||
|
dest: "{{ tes3mp.dest }}/{{ tes3mp.name }}-archive.tar.gz"
|
||||||
|
url: "{{ tes3mp.archive }}"
|
||||||
|
register: get_archive
|
||||||
|
- name: Install server
|
||||||
|
block:
|
||||||
|
- name: Stop service
|
||||||
|
systemd:
|
||||||
|
name: "tes3mp@{{ tes3mp.name }}"
|
||||||
|
state: stopped
|
||||||
|
- name: Unpack zip
|
||||||
|
unarchive:
|
||||||
|
src: "{{ tes3mp.dest }}/{{ tes3mp.name }}-archive.tar.gz"
|
||||||
|
remote_src: yes
|
||||||
|
dest: "{{ tes3mp.dest }}/{{ tes3mp.name }}"
|
||||||
|
when: get_archive is changed
|
||||||
|
- name: Configure server
|
||||||
|
template:
|
||||||
|
src: "{{ item.src }}"
|
||||||
|
dest: "{{ tes3mp.dest }}/{{ tes3mp.name }}/{{ item.dest }}"
|
||||||
|
loop:
|
||||||
|
- { src: "tes3mp-server-default.cfg", dest: "tes3mp-server-default.cfg" }
|
||||||
|
notify: "restart tes3mp {{ tes3mp.name }}"
|
||||||
|
- name: Set up system
|
||||||
|
block:
|
||||||
|
- name: Start and enable service
|
||||||
|
systemd:
|
||||||
|
name: "tes3mp@{{ tes3mp.name }}"
|
||||||
|
enabled: yes
|
||||||
|
state: started
|
||||||
|
- name: Template out backup module
|
||||||
|
template:
|
||||||
|
src: "backup.sh"
|
||||||
|
dest: "/opt/backups/modules/tes3mp-{{ tes3mp.name }}.sh"
|
||||||
|
mode: "0600"
|
||||||
|
become: yes
|
38
roles/tes3mp/templates/backup.sh
Normal file
38
roles/tes3mp/templates/backup.sh
Normal file
@ -0,0 +1,38 @@
|
|||||||
|
#! /bin/bash
|
||||||
|
#
|
||||||
|
# tes3mp.sh
|
||||||
|
# Backup script for Minecraft. Meant to be sourced by our main backup script
|
||||||
|
# Copyright (C) 2020 Vintage Salt <rehashedsalt@cock.li>
|
||||||
|
#
|
||||||
|
# Distributed under terms of the MIT license.
|
||||||
|
#
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
export OUTDIR="$BACKUPSDIR/{{ tes3mp.name }}"
|
||||||
|
retention=7 # 7-day retention period
|
||||||
|
|
||||||
|
# Sanity checks
|
||||||
|
if [ -z "$BACKUPSDIR" ]; then
|
||||||
|
log "BACKUPSDIR was undefined. Run the main backup script instead of this one."
|
||||||
|
return 1
|
||||||
|
fi
|
||||||
|
if ! [ -d "$OUTDIR" ]; then
|
||||||
|
if ! mkdir "$OUTDIR"; then
|
||||||
|
log "Unable to find or create output directory: $OUTDIR"
|
||||||
|
return 2
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
|
||||||
|
# Purge oldest backup if we need to
|
||||||
|
currentbackupcount="$(ls -1 "$OUTDIR" | wc -l)"
|
||||||
|
if (( currentbackupcount >= retention )); then
|
||||||
|
lastbackup="$(find "$OUTDIR" -name \*.tar.gz 2>/dev/null | sort | head -n 1)"
|
||||||
|
if [ -f "$lastbackup" ]; then
|
||||||
|
log "Removing old backup: $lastbackup"
|
||||||
|
rm "$lastbackup"
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
# WE MAKE BACKUP NOW SERGEI
|
||||||
|
tar czf "$OUTDIR/{{ tes3mp.name }}-$(date -Iseconds)-tes3mp.tar.gz" "{{ tes3mp.dest }}/{{ tes3mp.name }}/"
|
||||||
|
|
19
roles/tes3mp/templates/tes3mp-server-default.cfg
Executable file
19
roles/tes3mp/templates/tes3mp-server-default.cfg
Executable file
@ -0,0 +1,19 @@
|
|||||||
|
[General]
|
||||||
|
# The default localAddress of 0.0.0.0 makes the server reachable at all of its local addresses
|
||||||
|
localAddress = 0.0.0.0
|
||||||
|
port = {{ tes3mp.server.port }}
|
||||||
|
maximumPlayers = {{ tes3mp.server.maxplayers }}
|
||||||
|
hostname = {{ tes3mp.server.name }}
|
||||||
|
# 0 - Verbose (spam), 1 - Info, 2 - Warnings, 3 - Errors, 4 - Only fatal errors
|
||||||
|
logLevel = 1
|
||||||
|
password = {{ tes3mp.server.password }}
|
||||||
|
|
||||||
|
[Plugins]
|
||||||
|
home = ./CoreScripts
|
||||||
|
plugins = serverCore.lua
|
||||||
|
|
||||||
|
[MasterServer]
|
||||||
|
enabled = {{ tes3mp.master.enabled }}
|
||||||
|
address = {{ tes3mp.master.host }}
|
||||||
|
port = {{ tes3mp.master.port }}
|
||||||
|
rate = 10000
|
29
roles/tes3mp/templates/tes3mp@.service
Normal file
29
roles/tes3mp/templates/tes3mp@.service
Normal file
@ -0,0 +1,29 @@
|
|||||||
|
#
|
||||||
|
# Licensed under the terms of the MIT license
|
||||||
|
# vim:ft=dosini:
|
||||||
|
#
|
||||||
|
|
||||||
|
[Unit]
|
||||||
|
Description=TES3MP Server %i
|
||||||
|
After=network.target
|
||||||
|
|
||||||
|
[Service]
|
||||||
|
User=tes3mp
|
||||||
|
Group=tes3mp
|
||||||
|
WorkingDirectory={{ tes3mp.dest }}/%i
|
||||||
|
PrivateUsers=true
|
||||||
|
ProtectSystem=full
|
||||||
|
ProtectHome=true
|
||||||
|
# Implies MountFlags=slave
|
||||||
|
ProtectKernelTunables=true
|
||||||
|
# Implies NoNewPrivileges=yes
|
||||||
|
ProtectKernelModules=true
|
||||||
|
# Implies MountAPIVFS=yes
|
||||||
|
ProtectControlGroups=true
|
||||||
|
|
||||||
|
ExecStart=/bin/sh -c '/usr/bin/screen -DmS %i {{ tes3mp.dest }}/{{ tes3mp.name }}/tes3mp-server'
|
||||||
|
|
||||||
|
Restart=on-failure
|
||||||
|
|
||||||
|
[Install]
|
||||||
|
WantedBy=multi-user.target
|
Loading…
Reference in New Issue
Block a user