diff --git a/roles/minecraft/defaults/main.yml b/roles/minecraft/defaults/main.yml new file mode 100644 index 0000000..10f6078 --- /dev/null +++ b/roles/minecraft/defaults/main.yml @@ -0,0 +1,2 @@ +--- +minecraft_sha1sum: c8f83c5655308435b3dcf03c06d9fe8740a77469 diff --git a/roles/minecraft/files/minecraft.service b/roles/minecraft/files/minecraft.service new file mode 100644 index 0000000..47a3353 --- /dev/null +++ b/roles/minecraft/files/minecraft.service @@ -0,0 +1,12 @@ +[Unit] +Description=Minecraft Server +After=network.target + +[Service] +User=minecraft +Group=minecraft +WorkingDirectory=/srv/minecraft +ExecStart=/usr/bin/java -Xmx2048M -Xms1024M -jar /usr/local/lib/minecraft/server.jar nogui + +[Install] +WantedBy=multi-user.target diff --git a/roles/minecraft/files/server.properties b/roles/minecraft/files/server.properties new file mode 100644 index 0000000..6c7f4ec --- /dev/null +++ b/roles/minecraft/files/server.properties @@ -0,0 +1,54 @@ +#Minecraft server properties +#Mon Mar 07 18:44:22 UTC 2022 +enable-jmx-monitoring=false +rcon.port=25575 +level-seed= +gamemode=survival +enable-command-block=false +enable-query=false +generator-settings={} +level-name=world +motd=A Minecraft Server +query.port=25565 +pvp=true +generate-structures=true +difficulty=easy +network-compression-threshold=256 +require-resource-pack=false +max-tick-time=60000 +use-native-transport=true +max-players=20 +online-mode=true +enable-status=true +allow-flight=false +broadcast-rcon-to-ops=true +view-distance=10 +server-ip= +resource-pack-prompt= +allow-nether=true +server-port=25565 +enable-rcon=false +sync-chunk-writes=true +op-permission-level=4 +prevent-proxy-connections=false +hide-online-players=false +resource-pack= +entity-broadcast-range-percentage=100 +simulation-distance=10 +rcon.password= +player-idle-timeout=0 +force-gamemode=false +rate-limit=0 +hardcore=false +white-list=false +broadcast-console-to-ops=true +spawn-npcs=true +spawn-animals=true +function-permission-level=2 +level-type=default +text-filtering-config= +spawn-monsters=true +enforce-whitelist=false +resource-pack-sha1= +spawn-protection=16 +max-world-size=29999984 diff --git a/roles/minecraft/tasks/main.yml b/roles/minecraft/tasks/main.yml new file mode 100644 index 0000000..9796098 --- /dev/null +++ b/roles/minecraft/tasks/main.yml @@ -0,0 +1,114 @@ +--- +- name: install prequisites + ansible.builtin.package: + name: java-17-openjdk + state: installed + +- name: create group + ansible.builtin.group: + name: minecraft + gid: 1007 + +- name: create user + ansible.builtin.user: + name: minecraft + comment: Service Minecraft + uid: 1007 + group: minecraft + create_home: false + home: /var/empty + shell: /sbin/nologin + +- name: create data directory + ansible.builtin.file: + path: /export/minecraft + state: directory + mode: 0750 + owner: root + group: minecraft + +- name: link data directory + ansible.builtin.file: + path: /srv/minecraft + src: /export/minecraft + state: link + follow: false + owner: root + group: "{{ ansible_wheel }}" + +- name: create writable data directories + ansible.builtin.file: + path: "/srv/minecraft/{{ item }}" + state: directory + mode: 0770 + owner: root + group: minecraft + with_items: + - crash-reports + - libraries + - logs + - versions + - world + +- name: accept eula + ansible.builtin.copy: + dest: /srv/minecraft/eula.txt + content: | + eula=true + mode: 0640 + owner: root + group: minecraft + +- name: create server config + ansible.builtin.copy: + dest: /srv/minecraft/server.properties + src: server.properties + mode: 0640 + owner: root + group: minecraft + +- name: "create {{ item }}" + ansible.builtin.copy: + dest: "/srv/minecraft/{{ item }}" + content: [] + force: false + mode: 0660 + owner: root + group: minecraft + with_items: + - banned-ips.json + - banned-players.json + - ops.json + - whitelist.json + +- name: create minecraft binary directory + ansible.builtin.file: + path: /usr/local/lib/minecraft + state: directory + mode: 0755 + owner: root + group: "{{ ansible_wheel }}" + +- name: download minecraft binary + ansible.builtin.get_url: + dest: /usr/local/lib/minecraft/server.jar + url: >- + https://launcher.mojang.com/v1/objects/{{ minecraft_sha1sum }}/server.jar + checksum: "sha1:{{ minecraft_sha1sum }}" + mode: 0644 + owner: root + group: "{{ ansible_wheel }}" + +- name: create service unit file + ansible.builtin.copy: + dest: /etc/systemd/system/minecraft.service + src: minecraft.service + mode: 0644 + owner: root + group: "{{ ansible_wheel }}" + +- name: enable service + ansible.builtin.service: + name: minecraft + enabled: true + state: started diff --git a/user.list b/user.list index 8de74be..49828ac 100644 --- a/user.list +++ b/user.list @@ -12,3 +12,4 @@ id user group notes 1004 docker docker docker registry 1005 backup backup 1006 mongod mongod +1007 minecraft minecraft