src.nth.io/

summaryrefslogtreecommitdiff
path: root/minecraft
diff options
context:
space:
mode:
authorLuke Hoersten <[email protected]>2020-07-03 12:01:00 -0500
committerLuke Hoersten <[email protected]>2020-07-03 12:01:00 -0500
commit578da7e200490a1c1a8f34bd2c8929c765ac58f4 (patch)
treee4442829f5678900c8ff80ffb4e29c3a4283133f /minecraft
parent19a6e28470d0bc998b4e1c0cb61f72f532ae8365 (diff)
Renamed papermc role to minecraft.
Diffstat (limited to 'minecraft')
-rw-r--r--minecraft/defaults/main.yaml12
-rw-r--r--minecraft/files/eula.txt1
-rw-r--r--minecraft/files/ops.json8
-rw-r--r--minecraft/handlers/main.yaml5
-rw-r--r--minecraft/tasks/main.yaml78
-rw-r--r--minecraft/templates/minecraft.service.j222
-rw-r--r--minecraft/vars/main.yaml5
7 files changed, 131 insertions, 0 deletions
diff --git a/minecraft/defaults/main.yaml b/minecraft/defaults/main.yaml
new file mode 100644
index 0000000..c307a8c
--- /dev/null
+++ b/minecraft/defaults/main.yaml
@@ -0,0 +1,12 @@
+---
+
+minecraft_user: "minecraft"
+minecraft_fork: "vanilla" # paper
+minecraft_parent_dir: "/opt"
+minecraft_motd: "A Minecraft Server"
+minecraft_mem: "2G"
+minecraft_seed: ""
+
+minecraft_paper_version: "1.16.1"
+minecraft_paper_build: "34"
+minecraft_vanilla_hash: "a412fd69db1f81db3f511c1463fd304675244077"
diff --git a/minecraft/files/eula.txt b/minecraft/files/eula.txt
new file mode 100644
index 0000000..02dccd9
--- /dev/null
+++ b/minecraft/files/eula.txt
@@ -0,0 +1 @@
+eula=true
diff --git a/minecraft/files/ops.json b/minecraft/files/ops.json
new file mode 100644
index 0000000..8ef1e5f
--- /dev/null
+++ b/minecraft/files/ops.json
@@ -0,0 +1,8 @@
+[
+ {
+ "uuid": "98827ef9-601c-49fd-b575-abc8de019854",
+ "name": "Lukemute",
+ "level": 4,
+ "bypassesPlayerLimit": true
+ }
+] \ No newline at end of file
diff --git a/minecraft/handlers/main.yaml b/minecraft/handlers/main.yaml
new file mode 100644
index 0000000..b5baff0
--- /dev/null
+++ b/minecraft/handlers/main.yaml
@@ -0,0 +1,5 @@
+---
+
+- name: restart minecraft
+ become: yes
+ systemd: name="minecraft.service" state="restarted" daemon_reload="yes"
diff --git a/minecraft/tasks/main.yaml b/minecraft/tasks/main.yaml
new file mode 100644
index 0000000..4c12d1b
--- /dev/null
+++ b/minecraft/tasks/main.yaml
@@ -0,0 +1,78 @@
+---
+
+- name: add minecraft user
+ become: yes
+ user: name="{{minecraft_user}}" home="{{minecraft_dir}}"
+
+- name: install jre
+ become: yes
+ apt: name="default-jre-headless"
+
+- name: set minecraft fork
+ set_fact: minecraft_url="{{minecraft_vanilla_url}}"
+ when: minecraft_fork == "vanilla"
+
+- name: set minecraft fork
+ set_fact: minecraft_url="{{minecraft_paper_url}}"
+ when: minecraft_fork == "paper"
+
+- name: create minecraft dir
+ become: yes
+ file:
+ path: "{{minecraft_dir}}"
+ owner: "{{minecraft_user}}"
+ group: "{{minecraft_user}}"
+ mode: "0755"
+ state: "directory"
+
+- name: download minecraft
+ become: yes
+ get_url:
+ url: "{{minecraft_url}}"
+ dest: "{{minecraft_dir}}/server.jar"
+ mode: "0755"
+ notify: restart minecraft
+
+- name: configure minecraft eula and ops
+ become: yes
+ copy:
+ src: "{{item}}"
+ dest: "{{minecraft_dir}}/{{item}}"
+ owner: "{{minecraft_user}}"
+ group: "{{minecraft_user}}"
+ loop:
+ - "eula.txt"
+ - "ops.json"
+ notify: restart minecraft
+
+- name: create server.properties
+ become: yes
+ file:
+ path: "{{minecraft_dir}}/server.properties"
+ state: "touch"
+ access_time: "preserve"
+ modification_time: "preserve"
+ owner: "{{minecraft_user}}"
+ group: "{{minecraft_user}}"
+
+- name: configure server.properties
+ become: yes
+ lineinfile:
+ path: "{{minecraft_dir}}/server.properties"
+ regexp: "^{{item.key}}="
+ line: "{{item.key}}={{item.value}}"
+ notify: restart minecraft
+ loop:
+ - {key: "motd", value: "{{minecraft_motd}}"}
+ - {key: "level-seed", value: "{{minecraft_seed}}"}
+
+- name: install systemd service
+ become: yes
+ template:
+ src: "minecraft.service.j2"
+ dest: "/lib/systemd/system/minecraft.service"
+ notify: restart minecraft
+
+- name: ensure service is started
+ become: yes
+ systemd: name="minecraft.service" enabled="yes" state="started"
diff --git a/minecraft/templates/minecraft.service.j2 b/minecraft/templates/minecraft.service.j2
new file mode 100644
index 0000000..0f0e91a
--- /dev/null
+++ b/minecraft/templates/minecraft.service.j2
@@ -0,0 +1,22 @@
+[Unit]
+Description=Minecraft Server
+Documentation=https://minecraft.gamepedia.com/Tutorials/Setting_up_a_server
+
+Wants=network.target
+After=network.target
+
+[Service]
+User={{minecraft_user}}
+Group={{minecraft_user}}
+WorkingDirectory={{minecraft_dir}}
+Restart=on-failure
+RestartSec=20 5
+ExecStart=/usr/bin/java -Xms{{minecraft_mem}} -Xmx{{minecraft_mem}} -XX:+UseG1GC -XX:+ParallelRefProcEnabled -XX:MaxGCPauseMillis=200 -XX:+UnlockExperimentalVMOptions -XX:+DisableExplicitGC -XX:+AlwaysPreTouch -XX:G1NewSizePercent=30 -XX:G1MaxNewSizePercent=40 -XX:G1HeapRegionSize=8M -XX:G1ReservePercent=20 -XX:G1HeapWastePercent=5 -XX:G1MixedGCCountTarget=4 -XX:InitiatingHeapOccupancyPercent=15 -XX:G1MixedGCLiveThresholdPercent=90 -XX:G1RSetUpdatingPauseTimePercent=5 -XX:SurvivorRatio=32 -XX:+PerfDisableSharedMem -XX:MaxTenuringThreshold=1 -Dusing.aikars.flags=https://mcflags.emc.gs -Daikars.new.flags=true -jar server.jar nogui
+
+PrivateTmp=true
+ProtectSystem=full
+NoNewPrivileges=true
+PrivateDevices=true
+
+[Install]
+WantedBy=multi-user.target
diff --git a/minecraft/vars/main.yaml b/minecraft/vars/main.yaml
new file mode 100644
index 0000000..a48fe3a
--- /dev/null
+++ b/minecraft/vars/main.yaml
@@ -0,0 +1,5 @@
+---
+
+minecraft_dir: "{{minecraft_parent_dir}}/minecraft/{{minecraft_fork}}"
+minecraft_paper_url: "https://papermc.io/api/v1/paper/{{minecraft_paper_version}}/{{minecraft_paper_build}}/download"
+minecraft_vanilla_url: "https://launcher.mojang.com/v1/objects/{{minecraft_vanilla_hash}}/server.jar"