test other version
Some checks failed
Ansible Minecraft CI/CD Pipeline / Ansible Lint Check (push) Successful in 58s
Ansible Minecraft CI/CD Pipeline / Project Structure Validation (push) Failing after 3s
Ansible Minecraft CI/CD Pipeline / Security Scan (push) Successful in 4s
Ansible Minecraft CI/CD Pipeline / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Deploy to Production (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Backup System Check (push) Has been skipped
Some checks failed
Ansible Minecraft CI/CD Pipeline / Ansible Lint Check (push) Successful in 58s
Ansible Minecraft CI/CD Pipeline / Project Structure Validation (push) Failing after 3s
Ansible Minecraft CI/CD Pipeline / Security Scan (push) Successful in 4s
Ansible Minecraft CI/CD Pipeline / Deploy to Staging (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Deploy to Production (push) Has been skipped
Ansible Minecraft CI/CD Pipeline / Backup System Check (push) Has been skipped
This commit is contained in:
83
roles/05-update/tasks/07-switch-versions.yml
Normal file
83
roles/05-update/tasks/07-switch-versions.yml
Normal file
@@ -0,0 +1,83 @@
|
||||
---
|
||||
- name: Create version backup directory
|
||||
ansible.builtin.file:
|
||||
path: "{{ spigot_backup_dir }}"
|
||||
state: directory
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0755'
|
||||
|
||||
- name: Stop Minecraft server
|
||||
ansible.builtin.systemd:
|
||||
name: minecraft
|
||||
state: stopped
|
||||
|
||||
- name: Backup current version
|
||||
ansible.builtin.shell: |
|
||||
BACKUP_NAME="version_backup_$(date +%Y%m%d_%H%M%S)"
|
||||
mkdir -p "{{ spigot_backup_dir }}/$BACKUP_NAME"
|
||||
cp -r "{{ minecraft_server_dir }}"/* "{{ spigot_backup_dir }}/$BACKUP_NAME/"
|
||||
become_user: "{{ minecraft_user }}"
|
||||
|
||||
- name: Copy world data to new version
|
||||
ansible.builtin.shell: |
|
||||
if [ -d "{{ minecraft_server_dir }}/world" ]; then
|
||||
cp -r "{{ minecraft_server_dir }}/world" "{{ spigot_new_version_dir }}/"
|
||||
fi
|
||||
if [ -d "{{ minecraft_server_dir }}/world_nether" ]; then
|
||||
cp -r "{{ minecraft_server_dir }}/world_nether" "{{ spigot_new_version_dir }}/"
|
||||
fi
|
||||
if [ -d "{{ minecraft_server_dir }}/world_the_end" ]; then
|
||||
cp -r "{{ minecraft_server_dir }}/world_the_end" "{{ spigot_new_version_dir }}/"
|
||||
fi
|
||||
if [ -d "{{ minecraft_server_dir }}/plugins" ]; then
|
||||
cp -r "{{ minecraft_server_dir }}/plugins" "{{ spigot_new_version_dir }}/"
|
||||
fi
|
||||
become_user: "{{ minecraft_user }}"
|
||||
|
||||
- name: Replace server directory with new version
|
||||
ansible.builtin.shell: |
|
||||
rm -rf "{{ minecraft_server_dir }}.old"
|
||||
mv "{{ minecraft_server_dir }}" "{{ minecraft_server_dir }}.old"
|
||||
mv "{{ spigot_new_version_dir }}" "{{ minecraft_server_dir }}"
|
||||
become_user: "{{ minecraft_user }}"
|
||||
|
||||
- name: Update version file
|
||||
ansible.builtin.copy:
|
||||
content: "{{ minecraft_version }}"
|
||||
dest: "{{ spigot_current_version_file }}"
|
||||
owner: "{{ minecraft_user }}"
|
||||
group: "{{ minecraft_group }}"
|
||||
mode: '0644'
|
||||
|
||||
- name: Start Minecraft server with new version
|
||||
ansible.builtin.systemd:
|
||||
name: minecraft
|
||||
state: started
|
||||
notify: "restart minecraft after version change"
|
||||
|
||||
- name: Wait for server to start
|
||||
ansible.builtin.wait_for:
|
||||
port: "{{ minecraft_port }}"
|
||||
delay: 30
|
||||
timeout: 300
|
||||
|
||||
- name: Verify server is running new version
|
||||
ansible.builtin.shell: |
|
||||
sleep 10
|
||||
/usr/local/bin/mcrcon -H 127.0.0.1 -P {{ rcon_port }} -p "{{ rcon_password }}" "version"
|
||||
register: version_check
|
||||
failed_when: false
|
||||
|
||||
- name: Display version switch result
|
||||
ansible.builtin.debug:
|
||||
msg:
|
||||
- "Version switch completed successfully"
|
||||
- "Server response: {{ version_check.stdout | default('No response') }}"
|
||||
- "Old version backed up to: {{ minecraft_server_dir }}.old"
|
||||
|
||||
- name: Clean up old version after successful switch
|
||||
ansible.builtin.file:
|
||||
path: "{{ minecraft_server_dir }}.old"
|
||||
state: absent
|
||||
when: version_check.rc == 0
|
Reference in New Issue
Block a user