docker-rm: check if rpm dependency is actually installed

If the deployment wasn't deployed under Docker, python2-docker package
is missing. Therefore, during the upgrade we don't want to try to remove
the containers under Docker, since they don't exist anyway.

python2-docker is needed by Ansible to remove the containers, so let's
make sure the package is installed, which is the case when the
deployment was under Docker.
If the rpm doesn't exist, we'll skip the tasks and don't try to remove
the containers.

The main case where docker-rm is useful is when upgrading on centos7
from rocky to stein, since we clear containers running in Docker during
the upgrade, so they run on Podman.

In reality, the future platform won't have Docker installed, so this
role will become useless and we'll probably deprecate it.

Closes-Bug: #1824301
Change-Id: Ic5036ffa756775e3806e18b09e034af2290bfb56
This commit is contained in:
Emilien Macchi 2019-04-11 09:57:00 -04:00 committed by Marios Andreou
parent 2c5d3f5f7d
commit e368e15226

View File

@ -1,11 +1,12 @@
--- ---
- name: Check if docker is installed - name: Check if python2-docker is installed
stat: command: /usr/bin/rpm -q python2-docker
path: /usr/bin/docker register: py2_docker_installed
register: docker_path_stat ignore_errors: true
changed_when: false
- name: Ensure docker service is running - name: Ensure docker service is running
when: docker_path_stat.stat.exists when: py2_docker_installed.rc|default('') == 0
systemd: systemd:
name: docker name: docker
register: docker_service_state register: docker_service_state
@ -16,6 +17,6 @@
state: absent state: absent
when: when:
- container_cli == 'podman' - container_cli == 'podman'
- docker_path_stat.stat.exists - py2_docker_installed.rc|default('') == 0
- docker_service_state.status['SubState'] == 'running' - docker_service_state.status['SubState'] == 'running'
with_items: "{{ containers_to_rm }}" with_items: "{{ containers_to_rm }}"