Add a Terraria role

Time to blow shit up
This commit is contained in:
Salt 2020-05-15 10:11:32 -05:00
parent 24b26d57bf
commit a2a3b10ac9
5 changed files with 115 additions and 0 deletions

View File

@ -84,6 +84,15 @@
nextcloud_tarbz2: "https://download.nextcloud.com/server/releases/nextcloud-18.0.0.tar.bz2"
nextcloud_url: "nc.9iron.club"
nextcloud_webroot: "/var/www/nextcloud"
- hosts: tag_terraria_vanilla
roles:
- role: terraria
vars:
terraria_name: "vanilla1"
terraria_zip: "https://terraria.org/server/terraria-server-1344.zip"
terraria_port: "7777"
terraria_worldsize: "large"
terraria_password: "dicks"
- hosts: tag_minecraft_ultreload
roles:
- role: backups

View File

@ -0,0 +1 @@
terraria_root: "/var/terraria"

View File

View File

@ -0,0 +1,72 @@
#!/usr/bin/ansible-playbook
# vim:ft=ansible:
---
- name: Set up Terraria user
block:
- name: Install required packages
apt:
name:
- mono-complete
- name: Assure terraria admin group
group:
name: ter-admin
- name: Assure server user
user:
name: terraria
group: ter-admin
system: yes
home: "{{ terraria_root }}"
- name: Assure var directory
file:
path: "{{ terraria_root }}"
state: directory
owner: root
group: terraria
# Sticky, SetGID
mode: "3770"
- name: Assure systemd unit
template:
src: "terraria@.service"
dest: "/etc/systemd/system/terraria@.service"
- name: Reload available daemons
systemd:
daemon_reload: yes
become: yes
- name: Set up Terraria server
block:
- name: Create server directory
file:
path: "{{ terraria_root }}/{{ terraria_name }}"
state: directory
- name: Check for existing install
stat:
path: "{{ terraria_root }}/{{ terraria_name }}/TerrariaServer"
register: stat_server_binary
- name: Unpack archive
block:
- name: Download zip
get_url:
dest: "{{ terraria_root }}/{{ terraria_name }}/pack.zip"
url: "{{ terraria_zip }}"
- name: Unpack zip
unarchive:
src: "{{ terraria_root }}/{{ terraria_name }}/pack.zip"
remote_src: yes
dest: "{{ terraria_root }}/{{ terraria_name }}"
- name: Move zip contents
shell: mv "{{ terraria_root }}/{{ terraria_name }}/Dedicated Server/*" "{{ terraria_root }}/{{ terraria_name }}"
when: not stat_server_binary.stat.exists
- name: Configure server
block:
- name: Template out server config
template:
src: config
dest: "{{ terraria_root }}/{{ terraria_name }}/config"
become: yes
- name: Enable service
systemd:
name: "terraria@{{ terraria_name }}"
daemon_reload: yes
enabled: yes
state: started
become: yes

View File

@ -0,0 +1,33 @@
#
# Licensed under the terms of the MIT license
# vim:ft=dosini:
#
[Unit]
Description=Terraria Server %i
After=network.target
[Service]
User=terraria
Group=ter-admin
WorkingDirectory={{ terraria_root }}/%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 ter-%i ./TerrariaServer.bin.x86_64'
ExecStop=/usr/bin/screen -p 0 -S ter-%i -X eval 'stuff "say Server is going down: Service was stopped"\\015'
ExecStop=/usr/bin/screen -p 0 -S ter-%i -X eval 'stuff "exit"\\015'
ExecStop=/bin/sleep 5
Restart=always
[Install]
WantedBy=multi-user.target