113 lines
3.2 KiB
YAML
113 lines
3.2 KiB
YAML
---
|
|
# =============================================================================
|
|
# Minecraft Podman Deployment - Uninstall Playbook
|
|
# =============================================================================
|
|
# Usage:
|
|
# ansible-playbook uninstall.yml --limit external-apps
|
|
#
|
|
# WARNING: This will remove ALL Minecraft data, containers, and configuration
|
|
# from the target server. Run only if you're sure you want to clean up.
|
|
# =============================================================================
|
|
|
|
- name: Uninstall Minecraft Server from Podman
|
|
hosts: minecraft
|
|
become: true
|
|
gather_facts: true
|
|
|
|
tasks:
|
|
- name: Confirm uninstall
|
|
ansible.builtin.pause:
|
|
prompt: "WARNING: This will remove all Minecraft data from {{ inventory_hostname }}. Type 'yes' to continue"
|
|
register: confirm
|
|
when: not ansible_check_mode
|
|
|
|
- name: Abort if not confirmed
|
|
ansible.builtin.fail:
|
|
msg: "Uninstall aborted"
|
|
when:
|
|
- not ansible_check_mode
|
|
- confirm.user_input | lower != "yes"
|
|
|
|
- name: Stop Minecraft service
|
|
ansible.builtin.systemd:
|
|
name: "minecraft.service"
|
|
state: stopped
|
|
enabled: false
|
|
ignore_errors: true
|
|
|
|
- name: Stop backup timer
|
|
ansible.builtin.systemd:
|
|
name: "minecraft-backup.timer"
|
|
state: stopped
|
|
enabled: false
|
|
ignore_errors: true
|
|
|
|
- name: Stop health timer
|
|
ansible.builtin.systemd:
|
|
name: "minecraft-health.timer"
|
|
state: stopped
|
|
enabled: false
|
|
ignore_errors: true
|
|
|
|
- name: Remove systemd unit files
|
|
ansible.builtin.file:
|
|
path: "{{ item }}"
|
|
state: absent
|
|
loop:
|
|
- "/etc/systemd/system/minecraft.service"
|
|
- "/etc/systemd/system/minecraft-backup.timer"
|
|
- "/etc/systemd/system/minecraft-backup.service"
|
|
- "/etc/systemd/system/minecraft-health.timer"
|
|
- "/etc/systemd/system/minecraft-health.service"
|
|
ignore_errors: true
|
|
|
|
- name: Reload systemd daemon
|
|
ansible.builtin.systemd:
|
|
daemon_reload: true
|
|
|
|
- name: Stop and remove container
|
|
containers.podman.podman_container:
|
|
name: "minecraft"
|
|
state: absent
|
|
ignore_errors: true
|
|
register: container_remove
|
|
when: not ansible_check_mode
|
|
|
|
- name: Remove container (fallback with command)
|
|
ansible.builtin.command: podman rm -f minecraft
|
|
ignore_errors: true
|
|
when:
|
|
- not ansible_check_mode
|
|
- container_remove is failed
|
|
|
|
- name: Remove base directory
|
|
ansible.builtin.file:
|
|
path: "/opt/minecraft"
|
|
state: absent
|
|
ignore_errors: true
|
|
when: not ansible_check_mode
|
|
|
|
- name: Remove Minecraft system user
|
|
ansible.builtin.user:
|
|
name: "minecraft"
|
|
state: absent
|
|
remove: true
|
|
ignore_errors: true
|
|
when: not ansible_check_mode
|
|
|
|
- name: Close firewall ports
|
|
ansible.posix.firewalld:
|
|
port: "{{ item }}"
|
|
permanent: true
|
|
immediate: true
|
|
state: disabled
|
|
loop:
|
|
- "25565/tcp"
|
|
- "25575/tcp"
|
|
ignore_errors: true
|
|
tags: [firewall]
|
|
|
|
- name: Uninstall complete message
|
|
ansible.builtin.debug:
|
|
msg: "Minecraft server removed from {{ inventory_hostname }}"
|