--- - name: Remove Gitea Actions runner hosts: all become: true vars: {} tasks: - name: Include systemd availability check ansible.builtin.include_role: name: gitea-runner tasks_from: systemd_check.yml - name: Get runner user UID ansible.builtin.command: id -u "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" register: runner_uid_result changed_when: false failed_when: false - name: Set runner UID fact ansible.builtin.set_fact: gitea_runner_uid: "{{ runner_uid_result.stdout }}" when: runner_uid_result.rc == 0 - name: Stop gitea-runner user service ansible.builtin.command: systemctl --user stop gitea-runner become: true become_user: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default('') }}" when: systemd_available.stat.exists changed_when: true failed_when: false - name: Disable gitea-runner user service ansible.builtin.command: systemctl --user disable gitea-runner become: true become_user: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default('') }}" when: systemd_available.stat.exists changed_when: true failed_when: false - name: Force-remove all Docker containers (rootless) ansible.builtin.shell: | set -o pipefail docker ps -aq 2>/dev/null | xargs -r docker rm -f 2>/dev/null || true args: executable: /bin/bash become: true become_user: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default('') }}" DOCKER_HOST: "unix:///run/user/{{ gitea_runner_uid | default('') }}/docker.sock" changed_when: false failed_when: false - name: Prune all Docker images, volumes, and build cache (rootless) ansible.builtin.command: docker system prune -af --volumes become: true become_user: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default('') }}" DOCKER_HOST: "unix:///run/user/{{ gitea_runner_uid | default('') }}/docker.sock" changed_when: false failed_when: false - name: Stop rootless Docker daemon ansible.builtin.command: systemctl --user stop docker become: true become_user: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" environment: XDG_RUNTIME_DIR: "/run/user/{{ gitea_runner_uid | default('') }}" changed_when: true failed_when: false - name: Include deregistration ansible.builtin.include_role: name: gitea-runner tasks_from: deregister.yml when: not skip_runner_registration | default(false) - name: Remove docker-prune user service file ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.config/systemd/user/docker-prune.service" state: absent failed_when: false - name: Remove docker-prune user timer file ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.config/systemd/user/docker-prune.timer" state: absent failed_when: false - name: Remove systemd user unit file ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.config/systemd/user/gitea-runner.service" state: absent when: remove_systemd_template | default(true) - name: Kill remaining processes of runner user ansible.builtin.command: loginctl terminate-user "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" failed_when: false changed_when: true - name: Wait for processes to terminate ansible.builtin.command: "pkill -u {{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" failed_when: false changed_when: false - name: Disable lingering for runner user ansible.builtin.command: loginctl disable-linger "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" failed_when: false changed_when: true - name: Remove runner user and home directory ansible.builtin.user: name: "{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}" state: absent remove: true when: remove_runner_user | default(true) failed_when: false - name: Remove Docker data root when user is kept ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.local/share/docker" state: absent when: not (remove_runner_user | default(true)) failed_when: false - name: Remove act cache when user is kept ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.cache/act" state: absent when: not (remove_runner_user | default(true)) failed_when: false - name: Remove systemd user config dir when user is kept ansible.builtin.file: path: "{{ gitea_runner_home | default('/home/grm-' ~ runner_name) }}/.config/systemd/user" state: absent when: not (remove_runner_user | default(true)) failed_when: false - name: Remove subuid entry for runner user ansible.builtin.lineinfile: path: /etc/subuid regexp: "^{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}:" state: absent failed_when: false - name: Remove subgid entry for runner user ansible.builtin.lineinfile: path: /etc/subgid regexp: "^{{ gitea_runner_service_user | default('grm-' ~ runner_name) }}:" state: absent failed_when: false - name: Remove runner data directory ansible.builtin.file: path: "{{ gitea_runner_data_dir | default('/var/lib/gitea-runner/' ~ runner_name) }}" state: absent - name: Remove runner config directory ansible.builtin.file: path: "{{ gitea_runner_config_dir | default('/etc/gitea-runner/' ~ runner_name) }}" state: absent