kubespray/roles/container-engine/docker/tasks/reset.yml

107 lines
2.9 KiB
YAML

---
- 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