--- # ================================================================= # Nextcloud Removal Playbook # ================================================================= # Rick-Infra - Clean removal of Nextcloud installation # # This playbook removes all Nextcloud components: # - Systemd services and timers # - Container and images # - Data directories # - Database and user # - Caddy configuration # - System user and groups # # Usage: ansible-playbook playbooks/remove-nextcloud.yml -i inventory/hosts.yml - name: Remove Nextcloud Installation hosts: arch-vps become: yes gather_facts: yes vars: nextcloud_user: nextcloud nextcloud_group: nextcloud nextcloud_home: /opt/nextcloud nextcloud_db_name: nextcloud nextcloud_db_user: nextcloud caddy_sites_enabled_dir: /etc/caddy/sites-enabled tasks: # ============================================ # Stop and Disable Services # ============================================ - name: Stop and disable nextcloud-cron timer systemd: name: nextcloud-cron.timer state: stopped enabled: no failed_when: false - name: Stop and disable nextcloud-cron service systemd: name: nextcloud-cron.service state: stopped enabled: no failed_when: false - name: Stop and disable nextcloud service systemd: name: nextcloud.service state: stopped enabled: no failed_when: false # ============================================ # Remove Container and Images # ============================================ - name: Remove nextcloud container (if running) command: podman rm -f nextcloud register: container_remove changed_when: container_remove.rc == 0 failed_when: false - name: Remove nextcloud images command: podman rmi -f {{ item }} loop: - docker.io/library/nextcloud:stable-fpm - docker.io/library/nextcloud register: image_remove changed_when: image_remove.rc == 0 failed_when: false # ============================================ # Remove Systemd Units # ============================================ - name: Remove nextcloud-cron systemd units file: path: "{{ item }}" state: absent loop: - /etc/systemd/system/nextcloud-cron.timer - /etc/systemd/system/nextcloud-cron.service - name: Remove nextcloud quadlet file file: path: /etc/containers/systemd/nextcloud.container state: absent - name: Reload systemd daemon systemd: daemon_reload: yes # ============================================ # Remove Database # ============================================ - name: Drop nextcloud database become_user: postgres postgresql_db: name: "{{ nextcloud_db_name }}" state: absent failed_when: false - name: Drop nextcloud database user become_user: postgres postgresql_user: name: "{{ nextcloud_db_user }}" state: absent failed_when: false # ============================================ # Remove Caddy Configuration # ============================================ - name: Remove nextcloud Caddy configuration file: path: "{{ caddy_sites_enabled_dir }}/nextcloud.caddy" state: absent notify: reload caddy # ============================================ # Remove Data Directories # ============================================ - name: Remove nextcloud home directory (including all data) file: path: "{{ nextcloud_home }}" state: absent # ============================================ # Remove User and Groups # ============================================ - name: Remove nextcloud user user: name: "{{ nextcloud_user }}" state: absent remove: yes force: yes - name: Remove nextcloud group group: name: "{{ nextcloud_group }}" state: absent # ============================================ # Clean Up Remaining Files # ============================================ - name: Find nextcloud-related files in /tmp find: paths: /tmp patterns: "nextcloud*,nc_*" file_type: any register: tmp_files - name: Remove nextcloud temp files file: path: "{{ item.path }}" state: absent loop: "{{ tmp_files.files }}" when: tmp_files.files | length > 0 failed_when: false - name: Remove caddy logs for nextcloud file: path: /var/log/caddy/nextcloud.log state: absent failed_when: false # ============================================ # Verification # ============================================ - name: Verify nextcloud service is removed command: systemctl list-units --all nextcloud* register: units_check changed_when: false - name: Verify nextcloud container is removed command: podman ps -a --filter name=nextcloud register: container_check changed_when: false - name: Display removal status debug: msg: | ✅ Nextcloud removal complete! Removed components: - âšī¸ Nextcloud service and cron timer - đŸŗ Container: {{ 'Removed' if container_remove.rc == 0 else 'Not found' }} - đŸ—„ī¸ Database: {{ nextcloud_db_name }} - 📁 Data directory: {{ nextcloud_home }} - 👤 System user: {{ nextcloud_user }} - 🌐 Caddy configuration Remaining services: {{ units_check.stdout }} Containers: {{ container_check.stdout }} handlers: - name: reload caddy systemd: name: caddy state: reloaded failed_when: false