update
Some checks failed
Deploy Minecraft Server / deploy (push) Failing after 1m25s
Ansible Lint / lint (push) Failing after 12s

This commit is contained in:
2025-08-26 14:28:09 +02:00
parent 0315edf95f
commit 31711c7627
105 changed files with 1419 additions and 366 deletions

View File

@@ -0,0 +1,14 @@
---
- name: Check for new SSH keys in authorized_keys
stat:
path: /home/{{ ansible_user }}/.ssh/authorized_keys
register: ssh_keys_stat
- name: Update SSH keys if changed
authorized_key:
user: "{{ ansible_user }}"
key: "{{ item }}"
state: present
loop: "{{ ssh_public_keys | default([]) }}"
when: ssh_public_keys is defined
tags: ['ssh-keys-update']

View File

@@ -0,0 +1,23 @@
---
- name: Check for system updates (Debian/Ubuntu)
apt:
update_cache: yes
cache_valid_time: 3600
register: apt_cache_update
when: ansible_os_family == "Debian"
- name: Check available upgrades
shell: apt list --upgradable 2>/dev/null | grep -v WARNING | wc -l
register: available_upgrades
changed_when: false
when: ansible_os_family == "Debian"
- name: Apply system updates if available
apt:
upgrade: yes
autoremove: yes
autoclean: yes
when:
- ansible_os_family == "Debian"
- available_upgrades.stdout | int > 1
notify: reboot if needed

View File

@@ -0,0 +1,26 @@
---
- name: Get current Spigot version
stat:
path: "{{ minecraft_server_dir }}/spigot.jar"
register: current_spigot
- name: Check latest Spigot version available
uri:
url: "https://api.papermc.io/v2/projects/paper/versions"
method: GET
return_content: yes
register: spigot_versions_api
failed_when: false
- name: Parse latest version
set_fact:
latest_spigot_version: "{{ (spigot_versions_api.json.versions | last) if spigot_versions_api.json is defined else minecraft_version }}"
- name: Compare versions
set_fact:
new_spigot_available: "{{ latest_spigot_version != minecraft_version }}"
when: latest_spigot_version is defined
- name: Display version information
debug:
msg: "Current: {{ minecraft_version }}, Latest: {{ latest_spigot_version | default('Unknown') }}, Update available: {{ new_spigot_available | default(false) }}"

View File

@@ -0,0 +1,16 @@
---
- name: Create temporary build directory
file:
path: "{{ minecraft_sources_dir }}/build_{{ latest_spigot_version }}"
state: directory
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
mode: '0755'
- name: Download BuildTools for new version
get_url:
url: "{{ spigot_build_tools_url }}"
dest: "{{ minecraft_sources_dir }}/build_{{ latest_spigot_version }}/BuildTools.jar"
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
mode: '0644'

View File

@@ -0,0 +1,38 @@
---
- name: Compile new Spigot version
shell: |
cd {{ minecraft_sources_dir }}/build_{{ latest_spigot_version }}
java -jar BuildTools.jar --rev {{ latest_spigot_version }}
become_user: "{{ minecraft_user }}"
args:
creates: "{{ minecraft_sources_dir }}/build_{{ latest_spigot_version }}/spigot-{{ latest_spigot_version }}.jar"
register: spigot_compile_result
- name: Set compilation success flag
set_fact:
new_spigot_compiled: "{{ spigot_compile_result.rc == 0 }}"
- name: Create new server directory
file:
path: "{{ minecraft_server_dir }}_{{ latest_spigot_version }}"
state: directory
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
mode: '0755'
when: new_spigot_compiled
- name: Copy new Spigot jar to new server directory
copy:
src: "{{ minecraft_sources_dir }}/build_{{ latest_spigot_version }}/spigot-{{ latest_spigot_version }}.jar"
dest: "{{ minecraft_server_dir }}_{{ latest_spigot_version }}/spigot.jar"
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
mode: '0644'
remote_src: yes
when: new_spigot_compiled
- name: Copy configuration files to new server directory
shell: |
cp -r {{ minecraft_server_dir }}/* {{ minecraft_server_dir }}_{{ latest_spigot_version }}/
chown -R {{ minecraft_user }}:{{ minecraft_group }} {{ minecraft_server_dir }}_{{ latest_spigot_version }}
when: new_spigot_compiled

View File

@@ -0,0 +1,29 @@
---
- name: Stop Minecraft service
systemd:
name: minecraft
state: stopped
- name: Create version switch script
template:
src: version-switch.sh.j2
dest: "{{ minecraft_tools_dir }}/version-switch.sh"
owner: "{{ minecraft_user }}"
group: "{{ minecraft_group }}"
mode: '0755'
- name: Execute version switch
shell: "{{ minecraft_tools_dir }}/version-switch.sh {{ minecraft_version }} {{ latest_spigot_version }}"
become_user: "{{ minecraft_user }}"
register: version_switch_result
- name: Update minecraft_version variable
set_fact:
minecraft_version: "{{ latest_spigot_version }}"
when: version_switch_result.rc == 0
- name: Start Minecraft service
systemd:
name: minecraft
state: started
when: version_switch_result.rc == 0

View File

@@ -0,0 +1,13 @@
---
- name: Clean up old build directories
file:
path: "{{ minecraft_sources_dir }}/build_{{ item }}"
state: absent
loop: "{{ old_versions | default([]) }}"
- name: Clean up old server directories
file:
path: "{{ minecraft_server_dir }}_{{ item }}"
state: absent
loop: "{{ old_versions | default([]) }}"
when: cleanup_old_versions | default(true)

View File

@@ -0,0 +1,34 @@
---
- name: Include SSH keys check tasks
include_tasks: 01-check-ssh-keys.yml
when: ssh_keys_check_enabled
tags: ['update', 'ssh-keys']
- name: Include system updates check tasks
include_tasks: 02-check-system-updates.yml
when: system_update_check_enabled
tags: ['update', 'system']
- name: Include Spigot version check tasks
include_tasks: 03-check-spigot-version.yml
when: spigot_update_check_enabled
tags: ['update', 'spigot']
- name: Include new Spigot download tasks
include_tasks: 04-download-new-spigot.yml
when: new_spigot_available | default(false)
tags: ['update', 'download']
- name: Include new version compilation tasks
include_tasks: 05-compile-new-version.yml
when: new_spigot_available | default(false)
tags: ['update', 'compile']
- name: Include version switch tasks
include_tasks: 06-switch-versions.yml
when: new_spigot_compiled | default(false)
tags: ['update', 'switch']
- name: Include cleanup tasks
include_tasks: 07-cleanup.yml
tags: ['update', 'cleanup']