--- - name: Docker | Get package facts package_facts: manager: auto - name: Docker | Find docker packages set_fact: docker_packages_list: "{{ ansible_facts.packages.keys() | select('search', '^docker+') }}" containerd_package: "{{ ansible_facts.packages.keys() | select('search', '^containerd+') }}" - name: Docker | Stop all running container shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -q | xargs -r {{ docker_bin_dir }}/docker kill" args: executable: /bin/bash register: stop_all_containers retries: 5 until: stop_all_containers.rc == 0 changed_when: true delay: 5 ignore_errors: true # noqa ignore-errors when: docker_packages_list | length>0 - name: Reset | remove all containers shell: "set -o pipefail && {{ docker_bin_dir }}/docker ps -aq | xargs -r docker rm -fv" args: executable: /bin/bash register: remove_all_containers retries: 4 until: remove_all_containers.rc == 0 delay: 5 when: docker_packages_list | length>0 - name: Docker | Stop docker service service: name: "{{ item }}" enabled: false state: stopped loop: - docker - docker.socket - containerd when: docker_packages_list | length>0 - name: Docker | Remove dpkg hold dpkg_selections: name: "{{ item }}" selection: install when: ansible_pkg_mgr == 'apt' changed_when: false with_items: - "{{ docker_packages_list }}" - "{{ containerd_package }}" - name: Docker | Remove docker package package: name: "{{ item }}" state: absent changed_when: false with_items: - "{{ docker_packages_list }}" - "{{ containerd_package }}" when: - not ansible_os_family in ["Flatcar", "Flatcar Container Linux by Kinvolk"] - not is_ostree - docker_packages_list | length > 0 - name: Docker | ensure docker-ce repository is removed apt_repository: repo: "{{ item }}" state: absent with_items: "{{ docker_repo_info.repos }}" when: ansible_pkg_mgr == 'apt' - name: Docker | Remove docker repository on Fedora file: name: "{{ yum_repo_dir }}/docker.repo" state: absent when: ansible_distribution == "Fedora" and not is_ostree - name: Docker | Remove docker repository on RedHat/CentOS/Oracle/AlmaLinux Linux file: name: "{{ yum_repo_dir }}/docker-ce.repo" state: absent when: - ansible_os_family == "RedHat" - ansible_distribution != "Fedora" - not is_ostree - name: Docker | Remove docker configuration files file: name: "{{ item }}" state: absent loop: - /etc/systemd/system/docker.service.d/ - /etc/systemd/system/docker.socket - /etc/systemd/system/docker.service - /etc/systemd/system/containerd.service - /etc/systemd/system/containerd.service.d - /var/lib/docker - /etc/docker ignore_errors: true # noqa ignore-errors - name: Docker | systemctl daemon-reload # noqa no-handler systemd: daemon_reload: true