diff options
Diffstat (limited to 'minecraft')
| -rw-r--r-- | minecraft/defaults/main.yaml | 12 | ||||
| -rw-r--r-- | minecraft/files/eula.txt | 1 | ||||
| -rw-r--r-- | minecraft/files/ops.json | 8 | ||||
| -rw-r--r-- | minecraft/handlers/main.yaml | 5 | ||||
| -rw-r--r-- | minecraft/tasks/main.yaml | 78 | ||||
| -rw-r--r-- | minecraft/templates/minecraft.service.j2 | 22 | ||||
| -rw-r--r-- | minecraft/vars/main.yaml | 5 |
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" |
