diff --git a/.gitmodules b/.gitmodules new file mode 100644 index 0000000..87ef04d --- /dev/null +++ b/.gitmodules @@ -0,0 +1,3 @@ +[submodule "roles/minecraft"] + path = roles/minecraft + url = git@git.9iron.club:salt/ansible-role-minecraft diff --git a/roles/minecraft b/roles/minecraft new file mode 160000 index 0000000..d884471 --- /dev/null +++ b/roles/minecraft @@ -0,0 +1 @@ +Subproject commit d884471153692b584585d5a3c372076f39f65b5a diff --git a/roles/minecraft/defaults/main.yml b/roles/minecraft/defaults/main.yml deleted file mode 100644 index fdd4468..0000000 --- a/roles/minecraft/defaults/main.yml +++ /dev/null @@ -1,44 +0,0 @@ -# vim:ft=ansible: -minecraft_name: default -minecraft_version: 1.16.3 -# minecraft_forge_version: You tell me - -# Packages -# Put any extra dependencies (for mods, etc.) in _extra -minecraft_packages: - - openjdk-8-jre - - screen -minecraft_packages_extra: [] - -# Addon configuration -# You'll probably want to enable one of these -minecraft_paper_install: no -minecraft_paper_downloadurl: "https://papermc.io/api/v1/paper/{{ minecraft_version }}/latest/download" -minecraft_forge_install: no -minecraft_forge_downloadurl: "https://files.minecraftforge.net/maven/net/minecraftforge/forge/{{ minecraft_version }}-{{ minecraft_forge_version }}/forge-{{ minecraft_version }}-{{ minecraft_forge_version }}-installer.jar" -# Define this if you already have a modpack zipped up and ready to go -#minecraft_forge_packurl: https://path.to.your/modpack.zip -# Define THIS if you want to download a bunch of mods by JAR URL: -minecraft_forge_mods: [] -# Define THIS if you want to remove any mods that come with a pack by default -# Just a list of filenames in /mods. Matches directories, too -minecraft_forge_mods_remove: [] -minecraft_vanilla_install: no -minecraft_vanilla_downloadurl: "https://launcher.mojang.com/v1/objects/35139deedbd5182953cf1caa23835da59ca3d7cd/server.jar" - -# Service configuration -minecraft_home: /opt/minecraft -minecraft_stop_message: "Server is going down for maintenance" - -# Java configuration -minecraft_jre_xms: 2048m -minecraft_jre_xmx: 4096m - -# Minecraft configuration -# Contains key-value pairs that will be lineinfile'd into server.properties -# Example: -# minecraft_server_properties: -# - { opt: allow-flight, value: "false" } -# - opt: gamemode -# value: 0 -minecraft_server_properties: [] diff --git a/roles/minecraft/handlers/main.yml b/roles/minecraft/handlers/main.yml deleted file mode 100644 index a9003dc..0000000 --- a/roles/minecraft/handlers/main.yml +++ /dev/null @@ -1,8 +0,0 @@ -#!/usr/bin/ansible-playbook -# vim:ft=ansible: ---- -- name: "restart minecraft {{ minecraft_name }}" - systemd: - name: "minecraft@{{ minecraft_name }}" - state: restarted - become: yes diff --git a/roles/minecraft/tasks/main.yml b/roles/minecraft/tasks/main.yml deleted file mode 100644 index 287f526..0000000 --- a/roles/minecraft/tasks/main.yml +++ /dev/null @@ -1,87 +0,0 @@ -#!/usr/bin/ansible-playbook -# vim:ft=ansible: ---- -- name: set up system - block: - - name: install required packages - apt: name="{{ minecraft_packages + minecraft_packages_extra }}" - - name: assure server user - user: name=minecraft system=yes home={{ minecraft_home }} - - name: assure operational directory - file: path={{ minecraft_home }} state=directory owner=minecraft group=minecraft mode="3775" - - name: assure systemd unit - template: src=minecraft@.service dest=/etc/systemd/system/minecraft@.service - notify: "restart minecraft {{ minecraft_name }}" -- name: set up minecraft - block: - - name: assure server directory - file: path={{ minecraft_home }}/{{ minecraft_name }} state=directory - - name: accept eula - template: src=eula.txt dest={{ minecraft_home }}/{{ minecraft_name }}/eula.txt - - name: configure server properties - lineinfile: - dest: "{{ minecraft_home }}/{{ minecraft_name }}/server.properties" - line: "{{ item.opt }}={{ item.value }}" - regex: "^{{ item.opt }}=.*" - create: yes - loop: "{{ minecraft_server_properties }}" - notify: "restart minecraft {{ minecraft_name }}" - become: yes - become_user: minecraft -- name: set up paper - block: - - name: download paper - get_url: url={{ minecraft_paper_downloadurl }} dest={{ minecraft_home }}/{{ minecraft_name }}/server.jar - notify: "restart minecraft {{ minecraft_name }}" - # TODO: Manage configs for plugins, auto-install plugins - become: yes - become_user: minecraft - when: minecraft_paper_install -- name: set up forge - block: - - name: template out modpack installer - template: src=install-modpack.sh dest={{ minecraft_home }}/{{ minecraft_name }}/install-modpack.sh mode="0755" - - name: download forge - get_url: dest={{ minecraft_home }}/{{ minecraft_name }}/installer.jar url={{ minecraft_forge_downloadurl }} - register: download_forge - - name: install forge - command: - chdir: "{{ minecraft_home }}/{{ minecraft_name }}" - argv: [ "/usr/bin/java", "-jar", "./installer.jar", "--installServer" ] - notify: restart minecraft {{ minecraft_name }} - when: download_forge is changed - - name: link to forge jar - file: path={{ minecraft_home }}/{{ minecraft_name }}/server.jar src=forge-{{ minecraft_version }}-{{ minecraft_forge_version }}.jar state=link - - name: install modpack - block: - - name: download modpack - get_url: dest={{ minecraft_home }}/{{ minecraft_name }}/modpack.zip url={{ minecraft_forge_packurl }} - register: download_modpack - - name: install modpack - block: - - name: assure modpack unzip directory - file: path={{ minecraft_home }}/{{ minecraft_name }}/modpack state=directory - - name: unpack zip - unarchive: src={{ minecraft_home }}/{{ minecraft_name }}/modpack.zip dest={{ minecraft_home }}/{{ minecraft_name }}/modpack remote_src=yes - - name: run installer - command: - chdir: "{{ minecraft_home }}/{{ minecraft_name }}" - argv: [ "bash", "./install-modpack.sh" ] - notify: "restart minecraft {{ minecraft_name }}" - when: download_modpack is changed - when: minecraft_forge_packurl is defined - - name: install mods - get_url: dest="{{ minecraft_home }}/{{ minecraft_name }}/mods" url={{ item }} - loop: "{{ minecraft_forge_mods }}" - notify: "restart minecraft {{ minecraft_name }}" - when: minecraft_forge_mods is iterable and minecraft_forge_mods != None - - name: remove mods - file: path={{ minecraft_home }}/{{ minecraft_name }}/mods/{{ item }} state=absent - loop: "{{ minecraft_forge_mods_remove }}" - notify: "restart minecraft {{ minecraft_name }}" - when: minecraft_forge_mods_remove is iterable and minecraft_forge_mods_remove != None - become: yes - become_user: minecraft - when: minecraft_forge_install and minecraft_forge_version is defined -- name: enable service - systemd: name=minecraft@{{ minecraft_name }}.service enabled=yes state=started diff --git a/roles/minecraft/templates/eula.txt b/roles/minecraft/templates/eula.txt deleted file mode 100644 index b0cf95f..0000000 --- a/roles/minecraft/templates/eula.txt +++ /dev/null @@ -1,2 +0,0 @@ -# Tacos best food yadda yadda -eula=true diff --git a/roles/minecraft/templates/install-modpack.sh b/roles/minecraft/templates/install-modpack.sh deleted file mode 100644 index 8c56734..0000000 --- a/roles/minecraft/templates/install-modpack.sh +++ /dev/null @@ -1,15 +0,0 @@ -#! /bin/sh - -# Find out where our modpack lives -# -# This assumes that we have no directories adjacent to the actual pack dir -# that contain a directory called "mods" -# -# If that's not the case, the onus is on you to fix your shit and/or repack -# the server zip -# -directory="$(find modpack/ -type d -iname "mods" -execdir pwd \; | head -n 1)" -echo "Syncing from $directory/" - -# Now we rsync everything from that directory here, which should set us up -rsync -av "$directory"/ ./ diff --git a/roles/minecraft/templates/minecraft@.service b/roles/minecraft/templates/minecraft@.service deleted file mode 100644 index c13de59..0000000 --- a/roles/minecraft/templates/minecraft@.service +++ /dev/null @@ -1,39 +0,0 @@ -# -# Licensed under the terms of the MIT license -# Source: https://github.com/agowa338/MinecraftSystemdUnit/ -# vim:ft=dosini: -# - -[Unit] -Description=Minecraft Server %i -After=network.target - -[Service] -User=minecraft -Group=minecraft -WorkingDirectory={{ minecraft_home }}/%i -PrivateUsers=true -ProtectSystem=full -ProtectHome=true -# Implies MountFlags=slave -ProtectKernelTunables=true -# Implies NoNewPrivileges=yes -ProtectKernelModules=true -# Implies MountAPIVFS=yes -ProtectControlGroups=true - -ExecStart=/bin/sh -c '/usr/bin/screen -DmS %i /usr/bin/java -Xms{{ minecraft_jre_xms }} -Xmx{{ minecraft_jre_xmx }} -jar server.jar nogui' - -ExecReload=/usr/bin/screen -p 0 -S %i -X eval 'stuff "reload"\\015' - -ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "say Server is going down: Service was stopped"\\015' -ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "save-all"\\015' -ExecStop=/usr/bin/screen -p 0 -S %i -X eval 'stuff "stop"\\015' -ExecStop=/bin/sleep 5 - -Restart=always -# Restart after 24hrs -RuntimeMaxSecs=86400 - -[Install] -WantedBy=multi-user.target