-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathminecraft.yaml
153 lines (149 loc) · 4.51 KB
/
minecraft.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
---
- name: Set up minecraft server
become_user: "{{ service_name }}"
hosts: minecraft
vars:
service_name: minecraft
home: "/srv/{{ service_name }}"
server_name: 2025-01-31-fabric
server_dir: "{{ home }}/{{ server_name }}"
mc_version: 1.20.2
forge_version: 40.1.68
hash: 01192708acf889c7ed78f0cfc27446c947e4c5b2
install_type: vanilla
#worldpath: "{{ home }}/worlds"
#worldname: "myworld"
ufw_apps:
- { file: minecraft-server, app: Minecraft }
tasks:
- name: Create user
ansible.builtin.user:
name: "{{ service_name }}"
system: yes
shell: /usr/bin/bash
home: "{{ home }}"
- name: Install packages
ansible.builtin.apt:
name:
- openjdk-18-jre-headless
- openjdk-21-jre-headless
- name: Add tmux script
ansible.builtin.template:
src: files/minecraft/tmux_start.sh.j2
dest: "{{ home }}/tmux_start.sh"
- name: Create reboot tmux task
ansible.builtin.cron:
name: Start tmux on boot
#cron_file: backup-operationbot
special_time: reboot
user: "{{ service_name }}"
job: SHELL=/bin/bash $HOME/tmux_start.sh
state: absent
- name: Create server directory
ansible.builtin.file:
path: "{{ server_dir }}"
state: directory
become: yes
- name: Accept eula
ansible.builtin.copy:
content: eula=true
dest: "{{ server_dir }}/eula.txt"
become: yes
- name: Install forge
block:
- name: Check if start script exists
ansible.builtin.stat:
path: "{{ server_dir }}/run.sh"
register: target
- ansible.builtin.tempfile:
path: "{{ server_dir }}"
state: file
suffix: .jar
register: downloaded_file
become: yes
when: not target.stat.exists
- name: Download server
ansible.builtin.get_url:
url: "https://maven.minecraftforge.net/net/minecraftforge/forge/{{ mc_version }}-{{ forge_version }}/forge-{{ mc_version }}-{{ forge_version }}-installer.jar"
dest: "{{ downloaded_file.path }}"
checksum: "sha1:{{ hash }}"
become: yes
when: downloaded_file is changed
- name: Install server
ansible.builtin.command:
cmd: java -jar "{{ downloaded_file.path }}" --installServer
creates: "{{ server_dir }}/run.sh"
chdir: "{{ server_dir }}"
become: yes
when: downloaded_file is changed
- name: Delete installer
ansible.builtin.file:
state: absent
path: "{{ downloaded_file.path }}"
become: yes
when: downloaded_file is changed
- name: Copy wrapper
ansible.builtin.copy:
src: files/minecraft/wrap.sh
dest: "{{ server_dir }}/wrap.sh"
become: yes
when: install_type == "forge"
- name: Install vanilla
block:
- debug:
msg: this is vanilla
when: install_type == "vanilla"
#- name: Create operationbot backup crontab
# ansible.builtin.cron:
# name: Back up operationbot events
# #cron_file: backup-operationbot
# minute: "*/15"
# user: operationbot
# job: /srv/operationbot/operationbot/scripts/backup-events.sh > /dev/null
#- ansible.builtin.file:
# state: absent
# path: "{{ extract_dir.path }}"
# when: downloaded_file is changed
#- name: Make server executable
# ansible.builtin.file:
# path: "{{ server_dir }}/TerrariaServer.bin.x86_64"
# mode: u+x
#- name: Create config file
# ansible.builtin.template:
# src: files/terraria/serverconfig.txt.j2
# dest: "{{ home }}/serverconfig.txt"
# mode: 0600
# owner: "{{ service_name }}"
# group: "{{ service_name }}"
#- name: Create systemd service
# ansible.builtin.template:
# src: files/terraria/systemd.service.j2
# dest: /etc/systemd/system/{{ service_name }}.service
# notify:
# - Reload systemd
#- name: Run terraria
# ansible.builtin.systemd:
# state: started
# enabled: yes
# name: "{{ service_name }}"
#- name: Install terrariad
# ansible.builtin.template:
# src: files/terraria/terrariad.j2
# dest: /usr/local/bin/terrariad
# mode: 0755
# UFW
# TODO: move into a role
- name: Install UFW apps
ansible.builtin.copy:
src: "files/ufw/applications.d/{{ item.file }}"
dest: "/etc/ufw/applications.d/{{ item.file }}"
loop: "{{ ufw_apps }}"
- name: Enable UFW rules
community.general.ufw:
rule: allow
name: "{{ item.app }}"
loop: "{{ ufw_apps }}"
handlers:
- name: Reload systemd
ansible.builtin.systemd:
daemon_reload: yes