--- # ============================================================================= # 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 }}"