ansible/roles/terraria/tasks/main.yml

127 lines
3.8 KiB
YAML
Raw Normal View History

#!/usr/bin/ansible-playbook
# vim:ft=ansible:
---
- name: Set up Terraria user
block:
- name: Install required packages
apt:
name:
- mono-complete
- name: Disable bundled services
systemd:
name: "{{ item }}"
enabled: no
state: stopped
loop:
- "mono-xsp4"
- 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
2020-05-15 10:40:14 -05:00
group: ter-admin
# 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
2020-06-05 08:04:11 -05:00
shell: mv "{{ terraria_root }}/{{ terraria_name }}/1405/Linux/"* "{{ terraria_root }}/{{ terraria_name }}"
- name: Mark executable
file:
path: "{{ terraria_root }}/{{ terraria_name }}/TerrariaServer.bin.x86_64"
mode: "0755"
- name: Clean up
file:
path: "{{ item }}"
state: absent
loop:
- "{{ terraria_root }}/{{ terraria_name }}/pack.zip"
2020-06-05 08:04:11 -05:00
- "{{ terraria_root }}/{{ terraria_name }}/1405"
2020-05-15 10:49:42 -05:00
- name: Create worlds directory
file:
path: "{{ terraria_root }}/{{ terraria_name }}/worlds"
owner: terraria
group: ter-admin
state: directory
2020-05-15 11:04:34 -05:00
- name: Fix ownership
file:
path: "{{ terraria_root }}/{{ terraria_name }}"
recurse: yes
owner: terraria
group: ter-admin
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"
2020-05-15 11:04:34 -05:00
owner: terraria
group: ter-admin
become: yes
2020-05-19 12:02:30 -05:00
- name: Set up backups
block:
- name: Create backups directory
file:
state: directory
mode: "0700"
path: "{{ terraria_root }}/{{ terraria_name }}/backups"
owner: terraria
group: ter-admin
- name: Template out backup script
template:
src: "backup.sh"
dest: "{{ terraria_root }}/{{ terraria_name }}/backup.sh"
2020-05-19 12:06:56 -05:00
owner: terraria
group: ter-admin
2020-05-19 12:02:30 -05:00
mode: "0700"
- name: Set up backup cronjob
cron:
2020-05-19 12:10:13 -05:00
minute: "*/30"
2020-05-19 12:02:30 -05:00
name: "ansible-backup-terraria-{{ terraria_name }}"
job: "{{ terraria_root }}/{{ terraria_name }}/backup.sh >> {{ terraria_root }}/{{ terraria_name }}/backups.log 2>&1"
2020-05-19 12:03:32 -05:00
become: yes
- name: Enable service
systemd:
name: "terraria@{{ terraria_name }}"
daemon_reload: yes
enabled: yes
state: started
become: yes