From 1454bc4e4058a6c43520305a7747fe45269a6097 Mon Sep 17 00:00:00 2001 From: Massaki Archambault Date: Fri, 16 Jun 2023 22:53:07 -0400 Subject: [PATCH] add minecraft server --- hosts | 11 +++- playbook.yml | 4 +- roles/minecraft-server/defaults/main.yaml | 3 + roles/minecraft-server/files/eula.txt | 1 + .../files/minecraft-server.service | 14 +++++ roles/minecraft-server/handlers/main.yaml | 5 ++ roles/minecraft-server/tasks/main.yaml | 57 +++++++++++++++++++ .../templates/minecraft-server.sh | 3 + 8 files changed, 93 insertions(+), 5 deletions(-) create mode 100644 roles/minecraft-server/defaults/main.yaml create mode 100644 roles/minecraft-server/files/eula.txt create mode 100644 roles/minecraft-server/files/minecraft-server.service create mode 100644 roles/minecraft-server/handlers/main.yaml create mode 100644 roles/minecraft-server/tasks/main.yaml create mode 100644 roles/minecraft-server/templates/minecraft-server.sh diff --git a/hosts b/hosts index aed7d75..ea112b0 100644 --- a/hosts +++ b/hosts @@ -30,10 +30,15 @@ all: nfs_libraries: - 192.168.20.30:/mnt/pool0/media/Movies - 192.168.20.30:/mnt/pool0/media/Series - homeassistant: + minecraft-server: hosts: - homeassistant: + minecraft-server: ansible_host: 192.168.20.32 + mc_server_memory: 3500M + mc_server_ops: + - uuid: 649a9370-5cad-4553-93c8-cf0af25208dd + name: jirost + level: 4 k3s: children: k3s-server: @@ -67,7 +72,7 @@ all: bastions: k3s: plex: - homeassistant: + minecraft-server: vars: ansible_user: ansible ansible_password: !vault | diff --git a/playbook.yml b/playbook.yml index 8a13088..7019387 100644 --- a/playbook.yml +++ b/playbook.yml @@ -22,6 +22,6 @@ roles: - plex -- hosts: homeassistant +- hosts: minecraft-server roles: - - homeassistant \ No newline at end of file + - minecraft-server \ No newline at end of file diff --git a/roles/minecraft-server/defaults/main.yaml b/roles/minecraft-server/defaults/main.yaml new file mode 100644 index 0000000..b7d2814 --- /dev/null +++ b/roles/minecraft-server/defaults/main.yaml @@ -0,0 +1,3 @@ +mc_server_version: 15c777e2cfe0556eef19aab534b186c0c6f277e1 +mc_server_memory: 1000M +mc_server_ops: [] \ No newline at end of file diff --git a/roles/minecraft-server/files/eula.txt b/roles/minecraft-server/files/eula.txt new file mode 100644 index 0000000..ac74b96 --- /dev/null +++ b/roles/minecraft-server/files/eula.txt @@ -0,0 +1 @@ +eula=true \ No newline at end of file diff --git a/roles/minecraft-server/files/minecraft-server.service b/roles/minecraft-server/files/minecraft-server.service new file mode 100644 index 0000000..a32e8e0 --- /dev/null +++ b/roles/minecraft-server/files/minecraft-server.service @@ -0,0 +1,14 @@ +[Unit] +Description=Minecraft Server +Documentation=https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server +After=network-online.target + +[Service] +Type=simple +User=minecraft +Group=minecraft +WorkingDirectory=/srv/minecraft-server +ExecStart=/bin/bash /srv/minecraft-server/minecraft-server.sh + +[Install] +WantedBy=multi-user.target \ No newline at end of file diff --git a/roles/minecraft-server/handlers/main.yaml b/roles/minecraft-server/handlers/main.yaml new file mode 100644 index 0000000..d4a4755 --- /dev/null +++ b/roles/minecraft-server/handlers/main.yaml @@ -0,0 +1,5 @@ +- name: Restart server + systemd: + name: minecraft-server + daemon_reload: yes + state: restarted \ No newline at end of file diff --git a/roles/minecraft-server/tasks/main.yaml b/roles/minecraft-server/tasks/main.yaml new file mode 100644 index 0000000..35377fc --- /dev/null +++ b/roles/minecraft-server/tasks/main.yaml @@ -0,0 +1,57 @@ +# based on https://minecraft.fandom.com/wiki/Tutorials/Setting_up_a_server#Debian,_Ubuntu,_Raspbian + +- name: Install required packages + apt: + update_cache: yes + name: + - openjdk-18-jre-headless + +- name: Add user "minecraft" + user: + name: minecraft + create_home: false + shell: /bin/false + system: true + +- name: Create install directory + file: + path: /srv/minecraft-server + owner: minecraft + group: minecraft + state: directory + +- name: Download server jar + get_url: + url: https://piston-data.mojang.com/v1/objects/{{ mc_server_version }}/server.jar + dest: /srv/minecraft-server + notify: Restart server + +- name: Accept EULA + copy: + src: eula.txt + dest: /srv/minecraft-server/eula.txt + +- name: Configure server ops + copy: + content: "{{ mc_server_ops }}" + dest: /srv/minecraft-server/ops.json + notify: Restart server + +- name: Install server script + template: + src: minecraft-server.sh + dest: /srv/minecraft-server/minecraft-server.sh + notify: Restart server + +- name: Install minecraft-server systemd unit + copy: + src: minecraft-server.service + dest: /etc/systemd/system/minecraft-server.service + mode: 0644 + notify: Restart server + +- name: Enable minecraft-server service + systemd: + name: minecraft-server + daemon_reload: yes + enabled: yes \ No newline at end of file diff --git a/roles/minecraft-server/templates/minecraft-server.sh b/roles/minecraft-server/templates/minecraft-server.sh new file mode 100644 index 0000000..62ac83f --- /dev/null +++ b/roles/minecraft-server/templates/minecraft-server.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +exec /usr/bin/java -Xmn{{ mc_server_memory }} -Xmx{{ mc_server_memory }} -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 /srv/minecraft-server/server.jar \ No newline at end of file