81 lines
2.3 KiB
YAML
81 lines
2.3 KiB
YAML
---
|
|
- name: Update Minecraft Server
|
|
hosts: minecraft
|
|
become: true
|
|
vars:
|
|
minecraft_user: minecraft
|
|
minecraft_home: /opt/minecraft
|
|
mc_service_name: minecraft
|
|
mc_version_manifest: https://piston-meta.mojang.com/mc/game/version_manifest.json
|
|
backup_dir: "{{ minecraft_home }}/backup"
|
|
timestamp: "{{ lookup('pipe', 'date +%Y%m%d%H%M%S') }}"
|
|
|
|
tasks:
|
|
|
|
- name: Ensure jq and wget are installed
|
|
apt:
|
|
name: [ wget, jq ]
|
|
state: present
|
|
update_cache: true
|
|
|
|
- name: Stop Minecraft service
|
|
systemd:
|
|
name: "{{ mc_service_name }}"
|
|
state: stopped
|
|
|
|
- name: Create backup directory
|
|
file:
|
|
path: "{{ backup_dir }}"
|
|
state: directory
|
|
owner: "{{ minecraft_user }}"
|
|
group: "{{ minecraft_user }}"
|
|
mode: "0755"
|
|
|
|
- name: Backup current server.jar
|
|
copy:
|
|
src: "{{ minecraft_home }}/server.jar"
|
|
dest: "{{ backup_dir }}/server.jar.{{ timestamp }}"
|
|
remote_src: true
|
|
ignore_errors: yes # in case it's missing (first run)
|
|
|
|
- name: Backup world data folder
|
|
archive:
|
|
path: "{{ minecraft_home }}/world"
|
|
dest: "{{ backup_dir }}/world-{{ timestamp }}.tar.gz"
|
|
format: gz
|
|
become_user: "{{ minecraft_user }}"
|
|
when: ansible.builtin.stat.path is not none
|
|
ignore_errors: yes
|
|
|
|
- name: Download latest Minecraft server JAR
|
|
shell: |
|
|
set -e
|
|
cd "{{ minecraft_home }}"
|
|
latest_url=$(wget -qO- {{ mc_version_manifest }} | jq -r '.latest.release as $v | .versions[] | select(.id == $v) | .url')
|
|
server_url=$(wget -qO- "$latest_url" | jq -r '.downloads.server.url')
|
|
wget -qO server.jar "$server_url"
|
|
args:
|
|
executable: /bin/bash
|
|
|
|
- name: Ensure correct ownership of files
|
|
file:
|
|
path: "{{ minecraft_home }}"
|
|
owner: "{{ minecraft_user }}"
|
|
group: "{{ minecraft_user }}"
|
|
recurse: true
|
|
|
|
- name: Start Minecraft service
|
|
systemd:
|
|
name: "{{ mc_service_name }}"
|
|
state: started
|
|
|
|
- name: Verify service is running
|
|
systemd:
|
|
name: "{{ mc_service_name }}"
|
|
state: started
|
|
enabled: true
|
|
|
|
- name: Display success message
|
|
debug:
|
|
msg: "Minecraft server updated and restarted successfully on {{ inventory_hostname }}"
|