--- - name: Install prequisites ansible.builtin.package: name: java-17-openjdk state: installed - name: Create group ansible.builtin.group: name: minecraft gid: 307 - name: Create user ansible.builtin.user: name: minecraft comment: Service Minecraft uid: 307 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: Copy configs 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